分布式事件总线 Azure 集成
本文档说明如何配置 Azure Service Bus 作为分布式事件总线提供者。有关如何使用分布式事件总线系统,请参阅 分布式事件总线文档
安装
使用 ABP CLI 将 Volo.Abp.EventBus.Azure NuGet 包添加到您的项目:
- 如果尚未安装,请先安装 ABP CLI
- 在要添加
Volo.Abp.EventBus.Azure包的.csproj文件所在目录打开命令行(终端) - 运行
abp add-package Volo.Abp.EventBus.Azure命令
如需手动安装,请将 Volo.Abp.EventBus.Azure NuGet 包安装到您的项目,并在项目的 ABP 模块类中添加 [DependsOn(typeof(AbpEventBusAzureModule))]
配置
您可以使用标准配置系统进行配置,例如使用 appsettings.json 文件或使用选项类
appsettings.json 文件配置
这是配置 Azure Service Bus 设置的最简单方法。由于支持 AspNetCore 的任何其他配置源(如环境变量),这种方式也非常灵活
示例:使用默认配置连接到 Azure Service Bus 命名空间的最小配置
{
"Azure": {
"ServiceBus": {
"Connections": {
"Default": {
"ConnectionString": "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName={{Policy Name}};SharedAccessKey={};EntityPath=marketing-consent"
}
}
},
"EventBus": {
"ConnectionName": "Default",
"SubscriberName": "MySubscriberName",
"TopicName": "MyTopicName"
}
}
}
MySubscriberName是此订阅的名称,在 Azure Service Bus 上用作订阅者MyTopicName是主题名称
请参阅 Azure Service Bus 文档以更好地理解这些选项
连接
如果需要连接到默认命名空间之外的其他 Azure Service Bus 命名空间,需要配置连接属性
示例:声明两个连接并将其中一个用于事件总线
{
"Azure": {
"ServiceBus": {
"Connections": {
"Default": {
"ConnectionString": "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey={{SharedAccessKey}}"
},
"SecondConnection": {
"ConnectionString": "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName={{Policy Name}};SharedAccessKey={{SharedAccessKey}}"
}
}
},
"EventBus": {
"ConnectionName": "SecondConnection",
"SubscriberName": "MySubscriberName",
"TopicName": "MyTopicName"
}
}
}
这允许您在应用程序中使用多个 Azure Service Bus 命名空间,但选择其中一个用于事件总线
您可以为连接使用任何 ServiceBusAdministrationClientOptions、ServiceBusClientOptions、ServiceBusProcessorOptions 属性
示例:指定管理、客户端和处理器选项
{
"Azure": {
"ServiceBus": {
"Connections": {
"Default": {
"ConnectionString": "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName={{Policy Name}};SharedAccessKey={};EntityPath=marketing-consent",
"Admin": {
"Retry": {
"MaxRetries": 3
}
},
"Client": {
"RetryOptions": {
"MaxRetries": 1
}
},
"Processor": {
"AutoCompleteMessages": true,
"ReceiveMode": "ReceiveAndDelete"
}
}
}
},
"EventBus": {
"ConnectionName": "Default",
"SubscriberName": "MySubscriberName",
"TopicName": "MyTopicName"
}
}
}
选项类
AbpAzureServiceBusOptions 和 AbpAzureEventBusOptions 类可用于配置 Azure Service Bus 的连接字符串和事件总线选项
您可以在模块的 ConfigureServices 方法中配置这些选项
示例:配置连接
Configure<AbpAzureServiceBusOptions>(options =>
{
options.Connections.Default.ConnectionString = "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName={{Policy Name}};SharedAccessKey={}";
options.Connections.Default.Admin.Retry.MaxRetries = 3;
options.Connections.Default.Client.RetryOptions.MaxRetries = 1;
});
使用这些选项类可以与 appsettings.json 方式结合使用。在代码中配置选项属性会覆盖配置文件中的值
抠丁客


