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