Skip to content

Instantly share code, notes, and snippets.

View lmolkova's full-sized avatar

Liudmila Molkova lmolkova

View GitHub Profile
@lmolkova
lmolkova / amqp_metrics.md
Last active January 6, 2023 23:36
Azure SDK metrics: conventions
@lmolkova
lmolkova / messaging_notes.md
Last active July 21, 2022 16:11
Messaging: destination name and server name availability
@lmolkova
lmolkova / metrics_azure_sdk.md
Last active February 22, 2024 02:57
Metrics in Azure SDK for Java

Metrics in Azure SDK for Java

The immediate goal is to report metrics from Azure messaging SDKs (EventHubs and ServiceBus) to help customers detect and investigate configuration issues, performance bottlenecks, application and SDK bugs.

It can be broken down into smaller goals:

  • define metrics essential for messaging scenarios
  • define Metrics API in azure-core
  • metrics plugin implementations
@lmolkova
lmolkova / quarkus_and_micronaut_configuration.md
Last active March 5, 2022 04:33
Configuration beyond Spring

Quarkus configuration

Quarkus configuration is very similar to Spring:

  • supports application.properties and application.yaml
  • conventions on property names are the same: '.' as separator, kebab-case.
  • supports property sources, iterating over them and getting value by name programmatically or with annotation

What's different:

  • Quarkus uses smallrye-config which is implementation of microprofile-config. Annotation and feature-wise, it's similar to spring, but more explicit (reflection is discouraged)
  • Property metadata can be extended with microprofile language-server extension (example)
@lmolkova
lmolkova / azure-sdk-for-java-config-usage.md
Last active January 26, 2022 01:02
New configuration in Azure SDK for Java
  • SDKs expose IAzureClientBuilder<EventHubProducerClient, EventHubProducerClientOptions> AddEventHubProducerClient<TBuilder, TConfiguration>(this TBuilder builder, TConfiguration configuration) where TBuilder : IAzureClientFactoryBuilderWithConfiguration<TConfiguration>

    • Configuration format and binding to options are not defined in Azure SDKs
  • Implementation lives in Microsoft.Extensions.Azure

    • binding to options is done by microsoft.extensions.configuration through IConfiguration.Bind() and relies on *Options following microsoft.extensions.configuration conventions (i.e. properties)
    • options sources are whatever microsoft.extensions.configuration supports:
  • Config

@lmolkova
lmolkova / configuration_azure_sdk.md
Last active January 13, 2022 20:29
Configuration in Azure SDK for Java
@Autowired
ServiceBusSenderClient serviceBusClient;
@PostMapping("/queues")
public String send(@RequestParam("message") String message) {
serviceBusClient.sendMessage(new ServiceBusMessage(message));
return message;
}
@lmolkova
lmolkova / extract_activity_context.cs
Last active December 16, 2021 19:01
Azure SDK ExtractContext exmaples
public static class MessagingExtensions
{
// potential addition to event hubs SDK. service bus is similar
// The only concern is availability of ActivityContext prior to .NET 5
// there is a potential to update DiagnosticSource, but it's problematic because of
// version conflict: binding redirects on .NET Fx and version conflicts with Functions load contexts
public static ActivityContext ExtractTraceContext(this EventData @event)
{
if (@event.Properties.TryGetValue("Diagnostic-Id", out var tp) && tp is string traceparent)
{
package org.example.functions;
import com.azure.core.models.CloudEvent;
import com.azure.core.util.serializer.TypeReference;
import com.azure.messaging.eventgrid.EventGridEvent;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.microsoft.azure.functions.ExecutionContext;
import com.microsoft.azure.functions.HttpMethod;
import com.microsoft.azure.functions.HttpRequestMessage;