Azure Service Bus Pub/Sub Native Integration

Component: Azure Service Bus Transport
NuGet Package NServiceBus.Transport.AzureServiceBus (2-pre)
Target NServiceBus Version: 8.x
This page targets a pre-release version and is subject to change prior to the final release.

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

Prerequisites

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 SubscriptionDescription(topicPath, subscriptionName)
{
    LockDuration = TimeSpan.FromMinutes(5),
    EnableDeadLetteringOnFilterEvaluationExceptions = false,
    MaxDeliveryCount = int.MaxValue,
    EnableBatchedOperations = true,
}, new RuleDescription(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(
    ConnectionString,
    subscriptionName,
    ruleName:"event-one", 
    sqlFilter: new SqlFilter($"[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