Getting Started
Architecture
NServiceBus
Transports
Persistence
ServiceInsight
ServicePulse
ServiceControl
Monitoring
Samples

Azure Service Bus Pub/Sub Native Integration

NuGet Package: NServiceBus.Transport.AzureServiceBus (4-pre)
Target Version: NServiceBus 9.x
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

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.

Running the sample

  1. First, run the Publisher project by itself. This will create all the necessary publish/subscribe infrastructure in Azure Service Bus, including the default bundle-1 topic.
  2. Run the project normally so that all endpoints start.
  3. In the Publisher window, press any key to publish an event.
    • The endpoint in the NativeSubscriberA window will receive EventOne.
    • The endpoint in the NativeSubscriberB window will receive both EventOne and EventTwo.

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(
    ConnectionString,
    subscriptionName,
    ruleName:"event-one",
    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.

Related Articles


Last modified