Rabbit MQ消费者如何工作?

时间:2016-06-23 14:02:30

标签: php rabbitmq message-queue php-amqplib

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

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

1 个答案:

答案 0 :(得分:2)

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

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