【发布时间】:2014-02-03 18:17:02
【问题描述】:
我正在使用http://www.php.net/manual/en/book.amqp.php 在我的服务器上使用 Rabbit。
我无法使我的消息持久化。我将交换和队列设置为AMQP_DURABLE,但在服务器重新启动后队列为空。消息似乎没有保存到磁盘。
我将通过以下方式发布我的消息:http://www.php.net/manual/en/amqpexchange.publish.php
【问题讨论】:
我正在使用http://www.php.net/manual/en/book.amqp.php 在我的服务器上使用 Rabbit。
我无法使我的消息持久化。我将交换和队列设置为AMQP_DURABLE,但在服务器重新启动后队列为空。消息似乎没有保存到磁盘。
我将通过以下方式发布我的消息:http://www.php.net/manual/en/amqpexchange.publish.php
【问题讨论】:
您需要将消息设置为持久。您现在所做的只是将交换和队列设置为持久,这正是正在发生的事情。
因此,要将消息保存到磁盘,您需要将 delivery_mode 设置为 2。也就是说,durable。
看看这个thread 看看它的实际效果(代码无耻地从@Grzegorz Motyl 的回答中复制):
$exchange->publish($text, $routingKey, null, array('delivery_mode' => 2));
【讨论】: