RabbitMQ
RabbitMQ 是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。Fireasy 提供了 RabbitMQ 对 订阅管理器 的实现。
修改配置文件如下:
- .Net Framework 下的 app.config 或 web.config 文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="fireasy">
<section name="subscribers" type="Fireasy.Common.Subscribes.Configuration.SubscribeConfigurationSectionHandler, Fireasy.Common" />
</sectionGroup>
</configSections>
<fireasy>
<subscribers default="rabbitmq">
<subscriber name="rabbitmq" type="Fireasy.RabbitMQ.SubscribeManager, Fireasy.RabbitMQ">
<config
userName="guest"
password="123"
server="amqp://127.0.0.1:5672"
exchangeType="topic"
virtualHost="sample" />
</subscriber>
</subscribers>
</fireasy>
</configuration>
- .Net Core 下的 appsettings.json 文件
{
"fireasy": {
"subscribers": {
"default": "rabbitmq",
"settings": {
"rabbitmq": {
"type": "Fireasy.RabbitMQ.SubscribeManager, Fireasy.RabbitMQ",
"config": {
"userName": "guest",
"password": "123",
"server": "amqp://127.0.0.1:5672",
"exchangeType": "topic",
"virtualHost": "sample"
}
}
}
}
}
}
参数的说明如下:
- userName 用户名。
- password 密码。
- exchangeType 交换器类型,取值为 topic、fanout 或 direct。默认为空,则为 woker 模式。
- exchangeName 交换机名称。
- virtualHost 虚拟主机名称。
- retryDelayTime 发布或订阅时重试的延迟时间。
- retryTimes 发布或订阅失败后可以重试的次数。
- serializerType 指定
ITextSerializer
类型(非必要)。
在 .Net Core 应用中可以使用扩展方法 AddRabbitMQSubscriber 切换到 RabbitMQ 发布订阅,如下所示:
namespace demo
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddFireasy().AddRabbitMQSubscriber(s =>
{
s.UserName = "guest";
s.Password = "123";
s.Server = "amqp://127.0.0.1:5672";
});
}
}
}
使用 AddRabbitMQSubscriber 方法,可以不再使用外部配置文件,而通过 RabbitOptions
参数来设置以上的各种参数。当然,如果你要继续使用配置文件的话,也可以通过 ConfigName 属性指定配置文件中的配置项。如下所示:
namespace demo
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddFireasy().AddRabbitMQSubscriber(s =>
{
s.ConfigName = "rabbitmq"; //对应配置文件中的配置项
});
}
}
}