【发布时间】:2017-12-12 03:52:34
【问题描述】:
我有一个发布者,它将消息发布到 rabbitmq://localhost/test123 队列。一条消息具有 TestMessage 类型,另一条消息具有 TestMessage2 类型。
发布者配置:
sbc.UseRabbitMq(r => r.ConfigureHost(new MessageUrn("rabbitmq://localhost/test123"), c => { }));
sbc.UseLog4Net();
sbc.UseJsonSerializer();
sbc.EnableMessageTracing();
sbc.ReceiveFrom(new MessageUrn("rabbitmq://localhost/test123"));
每种消息类型有两个单独的消费者(2 个消费者),消费者 1:
//config stuff
sbc.ReceiveFrom("rabbitmq://localhost/test678?prefetch=20");
sbc.Subscribe(subs => { subs.Handler<TestMessage>(msg => { Logger.Info(msg.Text); }); });
消费者2:
//config stuff
sbc.ReceiveFrom("rabbitmq://localhost/test678");
sbc.Subscribe(
subs =>
{
subs.Handler<TestMessage2>(
msg => { Logger.Info(String.Format("rcv:txt= {0}, number= {1}", msg.Text, msg.Number)); });
});
因此,当我停止发布者并运行其中一个消费者时,他会使用他类型的所有消息并将其他消息移动到错误队列中。 Exchange for test678 对这两种类型都有绑定。
两个不同的消费者在将其他消息移动到错误队列时尝试读取他们的消息是正常行为吗?为什么我不能在具有不同兴趣类型的不同消费者之间共享一个队列?
(我认为这不是公共交通问题,而是rabbitmq设计考虑或限制)
提前致谢。
【问题讨论】:
标签: rabbitmq message-queue messaging masstransit