使用RabbitMQ的MassTransit:何时将消息移动到错误队列

时间:2013-12-11 08:46:24

标签: rabbitmq message-queue masstransit

我正在使用RabbitMQ版本3.0.2&我在错误队列中看到接近1000条消息。我想知道

  1. 消息何时被移动到错误队列?
  2. 有没有办法知道为什么某条消息被移动到错误队列?
  3. 有没有办法将消息从错误队列移动到正常队列?
  4. 谢谢

2 个答案:

答案 0 :(得分:8)

  1. a)他们无法反序列化或b)消费者抛出异常处理该消息五次
  2. 不是......如果您查看队列中的消息,有效负载标头可能包含注释,但我不认为我们这样做了。如果您打开登录(NLog,log4net等),您应该能够在日志中看到异常。您必须在此时关联消息ID以确定原因。
  3. MassTransit没有内置方式。主要是因为它似乎不是一个很好的,通用的方法来处理这个问题。每个人都想要一些过程。 Dru确实创建了一个BusDriver应用程序(在main MT source repo中),可用于将消息移回有问题的交换机。这种默认行为是存在的,所以如果你没有放入基础设施来处理它,你至少知道事情已经失败了。

答案 1 :(得分:1)

要添加到Travis的回答,在我的开发过程中,我发现了一些其他原因让消息进入错误队列:

  1. 发布的消息类型没有消费者
  2. SAGA和消费者期待相同的具体消息类型。即使您尝试使用“接受”和“.Selected”进行区分,也不应将SAGA和消费者编程为接收相同的消息类型。