web-dev-qa-db-ja.com

AMQPの「配信モード」とは何ですか?

私は2つのオプションが利用可能であることを理解しています:

  • "非永続"
  • "持続的"

しかし、これは実際にはどういう意味ですか?

「非永続的」のように:AMQPファブリックは、コンシューマがない場合にメッセージを配信しようとしますが、メッセージはドロップされますか?

「永続的」のように:AMQPは、消費者が受け入れるまでメッセージを再試行しますか?

49
jldupont

「永続的」キューに配信される「永続的」とマークされたメッセージは、ディスクに記録されます。耐久性のあるキューは、クラッシュが発生した場合に、クラッシュ前に保存していた永続メッセージとともに回復されます。

39
alexis

AMQPのdelivery_modeは、ブローカーの再起動後にメッセージをディスクに保存するかどうかを決定します。 PHP(PECL AMQP拡張))でインスタンスのメッセージを公開するときにdelivery_mode property = 2を設定することにより、メッセージを永続としてマークできます。

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

また、キューを永続的として宣言する必要があります(または、ブローカーが停止した後に削除されます)

$queue->setFlags(AMQP_DURABLE);
15
Grzegorz Motyl