据我所知,有两种选择:
但这究竟意味着什么?
“非持久性”如下:如果没有消费者,AMQP结构将尝试传递消息,消息将被删除?
“持久”如下:AMQP将重试该消息,直到消费者接受它?
答案 0 :(得分:35)
标记为“持久”的邮件将传递到“持久”队列,并将记录到磁盘。在发生崩溃时恢复持久队列,以及在崩溃之前存储的任何持久消息。
答案 1 :(得分:14)
delivery_mode
确定在代理重新启动后是否将消息存储在磁盘上。您可以通过在发布消息时设置delivery_mode property = 2
来将消息标记为持久性
例如在PHP(PECL AMQP扩展)中:
$exchange->publish($text, $routingKey, null, array('delivery_mode' => 2));
您还需要将队列声明为持久(或在代理停止后将其删除)
$queue->setFlags(AMQP_DURABLE);