RabbitMQ分布式事件总线集成
本文档说明**如何配置RabbitMQ**作为分布式事件总线提供程序。有关如何使用分布式事件总线系统的详细信息,请参阅 分布式事件总线文档
安装步骤
使用ABP CLI将Volo.Abp.EventBus.RabbitMQ NuGet包添加到您的项目:
- 如果尚未安装,请先安装 ABP CLI
- 在需要添加
Volo.Abp.EventBus.RabbitMQ包的.csproj文件所在目录打开命令行(终端) - 运行
abp add-package Volo.Abp.EventBus.RabbitMQ命令
如需手动安装,请将Volo.Abp.EventBus.RabbitMQ NuGet包安装到您的项目,并在项目的ABP模块类中添加[DependsOn(typeof(AbpEventBusRabbitMqModule))]特性
配置说明
您可以使用标准配置系统进行配置,例如使用appsettings.json文件或选项类
appsettings.json文件配置
这是配置RabbitMQ设置的最简单方法。由于支持AspNetCore的任何其他配置源(如环境变量),因此也非常强大
示例:使用默认配置连接到本地RabbitMQ服务器的最小配置
{
"RabbitMQ": {
"EventBus": {
"ClientName": "MyClientName",
"ExchangeName": "MyExchangeName"
}
}
}
ClientName是此应用程序的名称,在RabbitMQ中用作队列名称ExchangeName是交换机名称
请参阅RabbitMQ文档以更好地理解这些选项
连接配置
如果需要连接到非本地主机的服务器,需要配置连接属性
示例:指定主机名(作为IP地址)
{
"RabbitMQ": {
"Connections": {
"Default": {
"HostName": "123.123.123.123"
}
},
"EventBus": {
"ClientName": "MyClientName",
"ExchangeName": "MyExchangeName"
}
}
}
允许定义多个连接。在这种情况下,您可以指定用于事件总线的连接
示例:声明两个连接并将其中一个用于事件总线
{
"RabbitMQ": {
"Connections": {
"Default": {
"HostName": "123.123.123.123"
},
"SecondConnection": {
"HostName": "321.321.321.321"
}
},
"EventBus": {
"ClientName": "MyClientName",
"ExchangeName": "MyExchangeName",
"ConnectionName": "SecondConnection"
}
}
}
这允许您在应用程序中使用多个RabbitMQ服务器,但选择其中一个用于事件总线
您可以使用ConnectionFactory的任何属性作为连接属性
示例:指定连接端口
{
"RabbitMQ": {
"Connections": {
"Default": {
"HostName": "123.123.123.123",
"Port": "5672"
}
}
}
}
如果需要连接到RabbitMQ集群,可以使用;字符分隔主机名
示例:连接到RabbitMQ集群
{
"RabbitMQ": {
"Connections": {
"Default": {
"HostName": "123.123.123.123;234.234.234.234"
}
},
"EventBus": {
"ClientName": "MyClientName",
"ExchangeName": "MyExchangeName"
}
}
}
选项类配置
AbpRabbitMqOptions和AbpRabbitMqEventBusOptions类可用于配置RabbitMQ的连接字符串和事件总线选项
您可以在模块的ConfigureServices方法中配置这些选项
示例:配置连接
Configure<AbpRabbitMqOptions>(options =>
{
options.Connections.Default.UserName = "user";
options.Connections.Default.Password = "pass";
options.Connections.Default.HostName = "123.123.123.123";
options.Connections.Default.Port = 5672;
});
示例:配置客户端名称、交换机名称和预取数量
Configure<AbpRabbitMqEventBusOptions>(options =>
{
options.ClientName = "TestApp1";
options.ExchangeName = "TestMessages";
options.PrefetchCount = 1;
});
示例:配置队列和交换机的可选参数
Configure<AbpRabbitMqEventBusOptions>(options =>
{
options.ExchangeArguments["x-delayed-type"] = "direct";
options.QueueArguments["x-message-ttl"] = 60000;
});
使用这些选项类可以与appsettings.json方式结合使用。在代码中配置选项属性将覆盖配置文件中的值
抠丁客


