【发布时间】:2019-03-16 21:08:12
【问题描述】:
我最近构建了一个简单的 Mass Transit 服务来处理命令。如果我一次发送 3 个命令,它会正确消耗前 2 个命令,然后将第三个命令放在 *_skipped 队列中。我的理解是,如果端点上没有消费者可以处理它,那么该命令应该只放在跳过的队列中,所以我很困惑为什么应该跳过第三个命令。我可以做些什么来进一步调查并解决问题?
这是消费者的配置
services.AddMassTransit(x =>
{
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
{
var host = cfg.Host(_settings.RabbitMqConnectionString, "/", h => { });
cfg.UseInMemoryScheduler();
//cfg.UseMessageScheduler(new Uri("rabbitmq://localhost/quartz"));
cfg.UseExtensionsLogging(provider.GetRequiredService<ILoggerFactory>());
cfg.ReceiveEndpoint(host, CurriculumQueryHelper.EndpointName, e =>
{
e.Consumer<CurriculumQueryHelper>(provider);
});
cfg.ReceiveEndpoint(host, CurriculumCommandHelper.EndpointName, e =>
{
e.Consumer<CurriculumCommandHelper>(provider, config =>
{
//config.UseConcurrencyLimit(1);
});
});
}));
});
【问题讨论】:
-
第三条消息,_skipped 队列中的消息与前两条消息的类型相同吗?如果查看 JSON,MessageType 值是否相同?
-
是的。它们是同一类型
标签: rabbitmq masstransit