【发布时间】:2020-05-14 10:53:56
【问题描述】:
我刚刚从 RabbitMq 迁移到 Amazon SQS。
我不希望发生的一件事是,当我使用 docker 和 IHostedService 启动时,消息类型被创建为队列:
public void ConfigureServices(IServiceCollection services)
{
services.AddMassTransit(x =>
{
x.AddConsumer<EmailSentConsumer>();
x.AddBus(provider => Bus.Factory.CreateUsingAmazonSqs(cfg =>
{
cfg.Host("eu-west-2", h =>
{
h.AccessKey("********");
h.SecretKey("********");
});
cfg.ReceiveEndpoint("logging_example_queue", e =>
{
//e.ConfigureConsumer<EmailSentConsumer>(provider);
//e.ConfigureConsumer<EmailReceivedConsumer>(provider);
});
cfg.ConfigureEndpoints(provider);
}));
});
services.AddSingleton<IHostedService, BusService>();
services.AddMassTransitHostedService();
}
public class EmailSentConsumer : IConsumer<EmailSent>
EmailSent 被设置为队列,当我只想让此服务在 logging_example_queue 中侦听该事件类型时。
当我通过一个简单的控制台应用程序进行设置,并将消费者放在配置端点中时
cfg.ReceiveEndpoint("logging_queue", e =>
{
e.Consumer<ConsumerTo>();
e.Consumer<AnotherConsumer>();
});
这很好用,有什么建议吗?
编辑
所以,我尝试了 Chris 的回答,但这并没有按照建议创建队列,但我确实需要该主题。我想以此为例:
主题电子邮件已发送: 队列:记录 队列:EmailListener
以下是来自 AWS 的屏幕截图:
【问题讨论】:
标签: .net-core amazon-sqs masstransit