繁体   English   中英

Masstransit + RabbitMQ。 在两种不同的消息类型中共享一个队列

[英]Masstransit+ RabbitMQ. Share one queue among two different message types

我有一个发布者,该发布者将消息发布到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)); });
                });

因此,当我停止发布者并运行其中一个使用者时,他会消耗所有该类型的消息,并将其他消息移到错误队列中。 test678的交换具有两种类型的绑定。

2个不同的使用者在将其他消息移到错误队列时会尝试读取其消息是否是正常行为? 为什么我不能在具有不同兴趣类型的不同消费者之间共享一个队列?

(我认为这不是公交问题,而是rabbitmq设计注意事项或限制)

提前致谢。

如果从同一队列接收多个服务总线实例,则需要确保在该服务总线实例上注册的使用者是相同的。 否则,该服务使用的消息将被移到该类型的没有使用方的消息类型的_error队列中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM