Rabbit MQ 消费者如何工作?

How Rabbit MQ Consumers Work?

我有 2 个关于 rabbitmq 消费者(接收者)的问题:

  1. 我如何定义(从队列中静态地)注册到某个队列的消费者有哪些,这样如果一个消费者宕机了,消息仍然会在该消费者再次启动后传递,或者是否存在还有其他方法可以实现吗?
  2. 消费者如何连接到尚未创建的队列,在 rabbitmq 教程中,我可以在生产者之前调用消费者并且它仍然有效,有人可以解释一下这是如何工作的吗?

谢谢

  1. 实现你想要的很简单,这是 rabbitmq 的设计(只要确保你不自动确认)。消息保留在队列中,直到它被确认。所以基本上消费者应该完成处理消息然后确认它。如果消费者在处理过程中死亡,则消息不会被确认并重新排队。下次消费者启动时,它会收到该消息。当然,如果您有多个相同(为了简单起见)消费者的实例,则启动的消费者会接收重新排队的消息。很好地解释了 in the second tutorial on rmq website.

  2. 声明队列是一个幂等操作,如果队列不存在就会被创建。如果消费者是第一个创建队列的人,那很好,实际上 通常 它是如何工作的。发布者实际上甚至(不需要)知道队列,它只关心交换器和路由键。它也不关心是否有人在听,它只是发布消息。消费者需要告诉它想要绑定队列的路由键。