And*_*rew 6 c# asp.net masstransit rabbitmq
作为MassTransit和RabbitMQ的新用户,我目前正在尝试使ASP.NET核心服务与MassTransit一起使用。
采取本文档部分来配置MassTransit和ASP.NET Core,我无法使其正常运行。
当前(部分)Startup.cs看起来像
services.AddMassTransit(x =>
{
x.AddConsumer<MailConsumer>();
x.AddConsumer<MailFailedConsumer>();
x.AddBus(provider => ConfigureBus(provider, rabbitMqConfigurations));
});
private IBusControl ConfigureBus(
IServiceProvider provider,
RabbitMqConfigSection rabbitMqConfigurations) => Bus.Factory.CreateUsingRabbitMq(
cfg =>
{
var host = cfg.Host(
rabbitMqConfigurations.Host,
"/",
hst =>
{
hst.Username(rabbitMqConfigurations.Username);
hst.Password(rabbitMqConfigurations.Password);
});
cfg.ReceiveEndpoint(host, $"{typeof(MailSent).Namespace}.{typeof(MailSent).Name}", endpoint =>
{
endpoint.Consumer<MailConsumer>(provider);
});
cfg.ReceiveEndpoint(host, $"{typeof(MailSentFailed).Namespace}.{typeof(MailSentFailed).Name}", endpoint =>
{
endpoint.Consumer<MailFailedConsumer>(provider);
});
});
Run Code Online (Sandbox Code Playgroud)
该交换在启动时在RabbitMQ中自动创建,但是没有队列绑定到我期望的交换。
调用我的API端点后,我可以看到交换上的活动,但是由于没有队列,因此消费者当然不执行任何操作。
我缺少什么(明显)部分?
好的,我发现了问题。撰写文档时,其工作方式与文档中所述的相同。AddMassTransit该IServiceCollection接口有多个扩展名,这令人困惑。
AddMassTransit 重载,它接受总线实例的工作如所述。
AddMassTransit重载,它Action<IServiceCollectionConfigurator>仅接受必要的注册。
您需要添加一行:
services.AddMassTransitHostedService();
Run Code Online (Sandbox Code Playgroud)
这样您的代码就会起作用。
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |