AMQP中的“交付模式”是什么?

时间:2010-02-26 18:46:46

标签: amqp

据我所知,有两种选择:

  • “非持久”
  • “持续”

但这究竟意味着什么?

“非持久性”如下:如果没有消费者,AMQP结构将尝试传递消息,消息将被删除?

“持久”如下:AMQP将重试该消息,直到消费者接受它?

2 个答案:

答案 0 :(得分:35)

标记为“持久”的邮件将传递到“持久”队列,并将记录到磁盘。在发生崩溃时恢复持久队列,以及在崩溃之前存储的任何持久消息。

答案 1 :(得分:14)

AMQP中的

delivery_mode确定在代理重新启动后是否将消息存储在磁盘上。您可以通过在发布消息时设置delivery_mode property = 2来将消息标记为持久性 例如在PHP(PECL AMQP扩展)中:

$exchange->publish($text, $routingKey, null, array('delivery_mode' => 2));

您还需要将队列声明为持久(或在代理停止后将其删除)

$queue->setFlags(AMQP_DURABLE);