我有 2 个关于 rabbitmq 消费者(接收者)的问题:
- 我如何定义(从队列中静态地)注册到某个队列的消费者是什么,以便如果一个消费者关闭,消息仍将在该消费者再次启动后传递,或者有任何其他方法可以实现这个?
- 消费者如何连接到尚未创建的队列,在rabbitmq教程中,我可以在生产者之前调用消费者并且它仍然可以工作,有人可以解释一下这是如何工作的吗?
谢谢
我有 2 个关于 rabbitmq 消费者(接收者)的问题:
谢谢
要实现您想要的很简单,这是 rabbitmq 中的设计(只要确保您没有自动确认)。该消息将保留在队列中,直到它被确认。所以基本上消费者应该完成对消息的处理然后确认它。如果消费者在处理过程中死亡,则消息不会被确认并重新排队。下次消费者启动时,它会收到该消息。当然,如果您有多个相同(为简单起见)消费者的实例,则启动的消费者会接收重新排队的消息。rmq website 上的第二个教程很好地解释了这一点。
声明队列是幂等操作,如果队列不存在则创建队列。如果消费者是第一个创建队列的人,那很好,实际上它通常是这样工作的。发布者实际上甚至(不需要)知道队列,它只关心交换和路由密钥。它也不关心是否有人在听,它只是发布消息。消费者需要告诉它要绑定队列的路由键。