RabbitMQ立即行动(可能确认混淆)
我试图设置一个工作流,其中生产者向代理发送消息,代理将消息发送给消费者,并且消费者ACK返回到同一队列/通道,并且通过由“确认”生产者。
我基于我的信息:http://www.rabbitmq.com/blog/2011/02/10/introducing-publisher-confirms/
根据该文件,它应该等待消费者发送确认或确认。 但是,在我的测试中,它会立即返回ack(只要它到达代理(RabbitMQ))。
该文件说这将发生在三种情况下:
在basic.return之后确认一个不可路由的强制或即时消息;
否则,瞬时消息在入队时被确认; 和,
持久性消息在持久化到磁盘或在每个队列上消耗时都会被确认。
我确保将我的队列设置为持久,并在调用basicPublish时将传递模式设置为2(持续)。 所以这是一个持久的信息。 我也确保成功路由到队列。
这是预期的行为? 或者我做了一些错误的事情,让它立即得到答复,而不是等待消费者的反应?
发布商确认与消费者何时查询消息无关。
当消息被保存时,代理将发送“发布者确认”。
发布者知道消费者是否收到消息的唯一方法是实现某种RPC:http://www.rabbitmq.com/tutorials/tutorial-six-python.html
我想知道为什么你需要知道消费者是否收到了这条消息,因为消息传递通常是异步的,所以通过等待消费者的收据,你就可以使你的体系结构同步化
链接地址: http://www.djcxy.com/p/59235.html