Azure Service Bus Pub/Sub Native Integration

This sample shows how to subscribe to events published by an NServiceBus endpoint using the Azure Service Bus API


An environment variable named AzureServiceBus_ConnectionString with the connection string for the Azure Service Bus namespace.

Code walk-through

The sample contains three executable projects:

  • Publisher - an NServiceBus endpoint that publishes EventOne and EventTwo events.
  • NativeSubscriberA - subscribes to EventOne event published by the Publisher.
  • NativeSubscriberB - subscribes to both events published by the Publisher.

Setting up namespace entities

Each of the subscribers requires a topic subscription to receive the events published by the Publisher. The subscriptions are created on the bundle-1 topic which is the default name used by NServiceBus endpoints.

await client.CreateSubscriptionAsync(new CreateSubscriptionOptions(topicPath, subscriptionName)
    LockDuration = TimeSpan.FromMinutes(5),
    EnableDeadLetteringOnFilterEvaluationExceptions = false,
    MaxDeliveryCount = int.MaxValue,
    EnableBatchedOperations = true,
}, new CreateRuleOptions(ruleName, sqlFilter)).ConfigureAwait(false);

Subscription filters

Subscriptions created by NativeSubscriberA and NativeSubscriberB both contain a single filtering rule. NativeSubscriberA subscribes to the EventOne events only by specifying an SQL subscription rule (event-one) that matches the event type name stored in the event properties collection:

await TopologyManager.CreateSubscription(
    sqlFilter: new SqlRuleFilter($"[NServiceBus.EnclosedMessageTypes] LIKE '%{typeof(EventOne).FullName}%'")

The other subscriber uses TrueFilter in the all-events rule which ensures that both EventOne and EventTwo events are routed to its subscription.

Things to note

  • The use of the AzureServiceBus_ConnectionString environment variable mentioned above
  • Execute Publisher first to ensure that the topic is created

Related Articles

Last modified