Azure Service Bus Pub/Sub Native Integration

NuGet Package: NServiceBus.Transport.AzureServiceBus (3-pre)
This page targets a pre-release version. Pre-releases are subject to change and samples are not guaranteed to be fully functional.

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