Microsoft Azure Service Bus is a fully managed enterprise integration message broker. Service Bus is most commonly used to decouple applications and services from each other, and is a reliable and secure platform for asynchronous data and state transfer.
Azure services can be used in CAP as a message transporter.
!!! warning “Requirement” For the Service Bus pricing layer, CAP requires “standard” or “advanced” to support Topic functionality.
To use Azure Service Bus as a message transport, you need to install the following package from NuGet:
PM> Install-Package DotNetCore.CAP.AzureServiceBus
Next, add configuration items to the ConfigureServices
method of Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddCap(x =>
{
x.UseAzureServiceBus(opt=>
{
//AzureServiceBusOptions
});
// x.UseXXX ...
});
}
The AzureServiceBus configuration options provided directly by the CAP:
NAME | DESCRIPTION | TYPE | DEFAULT |
---|---|---|---|
ConnectionString | Endpoint address | string | |
EnableSessions | Enable Service bus sessions | bool | false |
TopicPath | Topic entity path | string | cap |
ManagementTokenProvider | Token provider | ITokenProvider | null |
When sessions are enabled (see EnableSessions
option above), every message sent will have a session id. To control the session id, include
an extra header with name AzureServiceBusHeaders.SessionId
when publishing events:
ICapPublisher capBus = ...;
string yourEventName = ...;
YourEventType yourEvent = ...;
Dictionary<string, string> extraHeaders = new Dictionary<string, string>();
extraHeaders.Add(AzureServiceBusHeaders.SessionId, <your-session-id>);
capBus.Publish(yourEventName, yourEvent, extraHeaders);
If no session id header is present, the message id will be used as the session id.