无法将Rebus消息调度到任何处理程序(Rebus 5 / Rebus.RabbitMQ 4.4.2)

时间:2018-12-01 07:37:34

标签: rabbitmq rebus

我正在尝试使用RabbitMQ作为Rebus 5的传输来设置单个发布者和多个订户方案。RabbitMQ是3.7.9。

虽然该示例使用MSMQ可以完美运行,但对于RabbitMQ,我收到警告,指出该消息无法分派给第一个订阅者的任何处理程序(在消耗掉第一条消息之后)。

顺序如下。

  1. Subscriber1被调用。
  2. Subscriber2被调用。
  3. 调用发布者。 (在订户之前或之后调用Publisher对行为没有影响)。
  4. 消息1已发布,并由Subscriber1使用,没有任何错误或警告。
  5. 消息2已发布,并由Subscriber2使用,没有任何错误或警告。
  6. 对于订阅者1消耗的任何消息,消息3及更高版本均发出警告,表示对Handler的警告,但Subscriber1确实获得了该消息。它没有被推送到RabbitMQ的错误队列。 (如果调用顺序依次颠倒-即Sub2在Sub1之前被调用-从消息3开始的消息消费将得到对Sub2的警告。)
  7. 对于从订户2消费的message4以后的所有消息,都不会给出错误或警告。

发布者和订阅者是Pub / Subsamples中代码的副本。据我所知,这与使用RabbitMQ进行传输有某种联系,也许某些配置没有完成。

====更新=====

我发现我正在预订单个队列(对于两个订户),这是导致消息在两个订户之间交替传递的原因。请参阅该SO问题中的说明。 Rebus: 2 handlers in 2 processes. Hit inconsistently and alternately

因此,现在,我为每个订阅者排队,并且两个订阅者都收到相同的消息,但是每次警告仍在发布者上发出。


已解决

情况有所改善,现在我也发出了警告。我必须专门定义一个消息类-最初我使用的是字符串消息,并将其提供给处理程序以及发布和订阅。

现在,两个订户都收到了相同的消息!

0 个答案:

没有答案