分布式事件总线RabbitMQ集成
本文解释了**如何配置RabbitMQ**做为分布式总线提供程序. 参阅分布式事件总线文档了解如何使用分布式事件总线系统.
安装
使用ABP CLI添加[Volo.Abp.EventBus.RabbitMQVolo.Abp.EventBus.RabbitMQNuGet包到你的项目:
- 安装ABP CLI,如果你还没有安装.
- 在你想要安装
Volo.Abp.EventBus.RabbitMQ
包的.csproj
文件目录打开命令行(终端). - 运行
abp add-package Volo.Abp.EventBus.RabbitMQ
命令.
如果你想要手动安装,安装Volo.Abp.EventBus.RabbitMQ NuGet 包到你的项目然后添加 [DependsOn(typeof(AbpEventBusRabbitMqModule))]
到你的项目模块类.
配置
可以使用配置使用标准的配置系统,如 appsettings.json
文件,或选项类.
appsettings.json
文件配置
这是配置RabbitMQ设置最简单的方法. 它也非常强大,因为你可以使用由AspNet Core支持的的任何其他配置源(如环境变量).
示例:最小化配置与默认配置连接到本地的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服务器,但将其中一个做为事件总线.
你可以使用任何ConnectionFactry属性作为连接属性.
示例: 指定连接端口
{
"RabbitMQ": {
"Connections": {
"Default": {
"HostName": "123.123.123.123",
"Port": "5672"
}
}
}
}
选项类
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";
});
使用这些选项类可以与 appsettings.json
组合在一起. 在代码中配置选项属性会覆盖配置文件中的值.