当前位置: 首页 > 知识库问答 >
问题:

RabbitMq中每个消息使用者的独立死信队列

贺海
2023-03-14

我有一个使用RabbitMQ构建的发布-订阅场景。有一个交换,其中消息由发布者发送,订阅该交换的任何使用者在其各自的队列中接收这些消息。这是一个扇出场景,其中有一个生产者,但有多个消费者。

现在我愿意在系统中集成一个死信队列,以便稍后处理被拒绝的消息。我的问题是

1)我应该为每个使用者配置一个单独的死信队列,还是应该有一个单独的死信队列来处理来自所有使用者的所有被拒绝的消息?

2)如果两者都有可能,哪一个更好?

共有1个答案

杜晨朗
2023-03-14

答案将全部取决于你的要求。

  1. 这取决于如何处理死信消息--如果使用单个队列,则可以在x-death头中找到来源信息。
  2. “更好”是主观的--这完全取决于您想做什么。
  3. 同样,这取决于您和您的应用程序设计。
  4. >...生产者队列...生产者不知道队列--只知道交换和(通常)路由密钥。因此,是的,它通常是一个消费者端配置。
 类似资料:
  • 这种需求类似于通过公开的REST服务API(Spring Boot)处理来自死信队列的消息。以便一旦调用REST服务,就会从DL队列中消耗一条消息,并将再次发布到主队列中进行处理。@RabbitListener(queues=“queue_name”)立即使用消息,这在场景中是不需要的。该消息只需由REST服务API使用。有什么建议或解决办法吗?

  • 我刚刚开始使用RabbitMQ和AMQP。 我有一个消息队列 我有多个消费者,我想用相同的消息做不同的事情。 RabbitMQ的大部分文档似乎都集中在循环(round-robin)上,即单个消息由单个消费者使用,负载在每个消费者之间分散。这的确是我目击的行为。 例如:生产者只有一个队列,每2秒发送一次消息: 这里有一个消费者: 如果我启动消费者两次,我可以看到每个消费者都在以循环行为消费交替消息。

  • 问题内容: 我一般只是开始使用RabbitMQ和AMQP。 我有一条消息队列 我有多个消费者,我想用 同一条消息 做不同的事情。 RabbitMQ的大多数文档似乎都集中在循环上,即单个消息由单个使用者使用,而负载则分散在每个使用者之间。我确实是这种行为。 例如:生产者只有一个队列,每2秒发送一次消息: 这是一个消费者: 如果我启动使用者两次,则 可以看到每个使用者都以循环方式使用替代消息。 例如,

  • 主要内容:6. 死信队列,6.1 死信的概念,6.2 死信的来源,6.3 死信实战6. 死信队列 6.1 死信的概念 死信,顾名思义就是无法被消费的消息。 字面意思可以这样理解,一般来说,producer(生产者)将消息投递到 broker 或者直接到 queue(队列)里了。consumer(消费者)从queue中取出消息后进行消费,但某些时候由于特定的原因导致 queue 中的消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。 应用场景:

  • RabbitMQ的大部分文档似乎都集中在循环(round-robin)上,即单个消息由单个消费者使用。我有一个需求,其中希望从一个队列接收到多个订阅的消费者的相同消息。 下面是我的示例消费者代码。这里有两个侦听器在侦听同一个队列,但是只有一个使用者接收到消息。如何配置它,以便将相同的消息传递给两个消费者?(Consumer1和Consumer2)。任何帮助都将得到高度赞赏。

  • 问题内容: 我想在一段时间后在我的一个工人中收到一条消息。在发现了所谓的死信交换之后,我决定使用Node和RabbitMQ。 该消息似乎已发送到DeadExchange中的队列,但是使用方在WorkExchange中的WorkQueue中经过了一段时间之后,使用者再也没有收到该消息。要么bindQueue关闭,要么死信不起作用? 我现在尝试 了很多 不同的值。有人可以指出我所缺少的吗? 我正在使用