返回消息发送到队列中的RabbitMQ结束(Return message to the end of

2019-09-29 08:28发布

我有交流和队列。 生产者不需要消耗确认,但在某些情况下,消息可能是由消费者未加工的在当前时刻,由于缺乏其他数据。 正因为如此,我想这些消息返回队列的末尾。 这个怎么做? 或者,当我拒绝消息就自动完成?

流:

  • MESSAGE1被占用并创建数据库中记录一些。
  • 消息2被占用并检查是否有记录在数据库中,如果是,则更新记录。 如果在数据库中没有记录,消息应返回到队列的末尾。

因此,有消息排序问题,在一般情况下,我得到的消息,为了,因为大多数组件的正确传递他们的信息。 我要解决潜在的局面,消息1时的制片人是不是能够把消息立即更换,因为重载或其他原因。 在这种情况下,消息2将首先被消耗,但不会有足够的信息在数据库中进行处理。 我想返回该消息回到队列中,不过可以肯定的是这个消息2将进入队列的尾部。 如果它会去头,如果我只用一个队列,我会得到无限循环。

侧面的问题是,如果它可以跟踪多次消费者如何尝试处理邮件,但回到住处。 如果有可能把消息队列的尾部就像我之前所描述的,但对于的消息1由于某种原因生产者死了,不会再有消息1,我要让经过一番试次数或一段时间的消息2死。

Answer 1:

的RabbitMQ始终把拒绝的邮件在队列的头。 把他们在尾部,你会(例如,使用自己出版他们RabbitTemplate )。 您可以重试计数增加一个头。



文章来源: Return message to the end of queue in rabbitmq