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