# Azure Service Bus 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. ## Configuration !!! 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: ```powershell PM> Install-Package DotNetCore.CAP.AzureServiceBus ``` Next, add configuration items to the `ConfigureServices` method of `Startup.cs`: ```csharp public void ConfigureServices(IServiceCollection services) { // ... services.AddCap(x => { x.UseAzureServiceBus(opt=> { //AzureServiceBusOptions }); // x.UseXXX ... }); } ``` #### AzureServiceBus Options The AzureServiceBus configuration options provided directly by the CAP: NAME | DESCRIPTION | TYPE | DEFAULT :---|:---|---|:--- ConnectionString | Endpoint address | string | EnableSessions | Enable [Service bus sessions](https://docs.microsoft.com/en-us/azure/service-bus-messaging/message-sessions) | bool | false TopicPath | Topic entity path | string | cap ManagementTokenProvider | Token provider | ITokenProvider | null #### Sessions 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: ```csharp ICapPublisher capBus = ...; string yourEventName = ...; YourEventType yourEvent = ...; Dictionary extraHeaders = new Dictionary(); extraHeaders.Add(AzureServiceBusHeaders.SessionId, ); capBus.Publish(yourEventName, yourEvent, extraHeaders); ``` If no session id header is present, the message id will be used as the session id.