メッセージングのためにRabbitMQを使用してかなり基本的なアプリケーションを作成しています。メッセージは1つのサーバーに公開され、2つ目のサーバーのダウンストリームではメッセージを消費する長期実行プロセスが発生します。RabbitMQ/AMQP HAアプリケーション:コンシューマが終了した後にキューを維持しますか?
出版社:今、私は次のように設定している
- が宣言直接交換myexchange
- 公開メッセージルーティングとの交流 myexchange にキーpayload.routingkey
Co nsumerプログラム:
- が宣言直接交換myexchange
- はキュー私の固有のキュー名
- バインド私の固有のキュー名(
true
のオプション耐久性のあるセットで)宣言しますキューto myexchange exchange - メッセージを消費する特定キュー名
私はこのプロセスがうまく機能しています。私が取り組んでいる状況は、私の消費者プログラムが死ぬと、myexchangeに公開された新しいメッセージが失われるように見えます。キューは交換にバインドされないからです。コンシューマプログラムがなくなってもメッセージがキューに入れられるため、コンシューマプログラムがオンラインに戻ってもメッセージは引き続き受信できるようになりますか?
筆記クライアントにはどの言語を使用していますか? – cantSleepNow
@cantSleepNow両方のクライアントにperlを使用します。私は[Net :: RabbitMQ](https://metacpan.org/pod/Net::RabbitMQ)モジュールを使用しています。 – Devin
キューを宣言するときに、 "exclusive"パラメータのデフォルト値は何ですか? 「耐久性」を真にしているので、「排他」が真であれば、消費者が切断または死んだときにキューが削除されることがあります – cantSleepNow