私は2つのオプションが利用可能であることを理解しています:
しかし、これは実際にはどういう意味ですか?
「非永続的」のように:AMQPファブリックは、コンシューマがない場合にメッセージを配信しようとしますが、メッセージはドロップされますか?
「永続的」のように:AMQPは、消費者が受け入れるまでメッセージを再試行しますか?
「永続的」キューに配信される「永続的」とマークされたメッセージは、ディスクに記録されます。耐久性のあるキューは、クラッシュが発生した場合に、クラッシュ前に保存していた永続メッセージとともに回復されます。
AMQPのdelivery_mode
は、ブローカーの再起動後にメッセージをディスクに保存するかどうかを決定します。 PHP(PECL AMQP拡張))でインスタンスのメッセージを公開するときにdelivery_mode property = 2
を設定することにより、メッセージを永続としてマークできます。
$exchange->publish($text, $routingKey, null, array('delivery_mode' => 2));
また、キューを永続的として宣言する必要があります(または、ブローカーが停止した後に削除されます)
$queue->setFlags(AMQP_DURABLE);