私は1つの直接交換を持っています。この交換にバインドされたキューも1つあります。AMQP/RabbitMQの - プロセスメッセージが順次
私はそのキューに対して2つのコンシューマを持っています。消費者は、対応する処理を実行すると、手動でメッセージを確認します。
メッセージは論理的に順序付け/ソートされており、この順序で処理する必要があります。すべてのメッセージが消費者Aと消費者Bの間で順次受信され、処理されるように強制することは可能ですか?つまり、AとBが同時にメッセージを処理しないようにします。
注:消費者はで、同じ接続やチャンネルを共有していません。です。つまり、<channel>.basicQoS(1);
は使用できません。
この質問の根拠:両方の消費者は同一です。一方がダウンすると、もう一方のキューはメッセージの処理を開始し、必要な介入なしにすべてが動作し続けます。
あなたの洞察をいただきありがとうございます。あなたの質問に戻ると、なぜAかBしかないのですか?AとBは同時にメッセージを処理すべきではないというあなたの理解に間違いありません。それは確かに 'AまたはB'です。しかし、私はAとBの両方を実行すると便利だと考えました。もしAかBがクラッシュした場合、システムは手動で介入せずに続行できます。私のアプローチは実際には不可能であることをあなたから理解しています。しかし、問題は次のとおりです。「A」(または「B」)から「B」(または「A」)への正しいフェイルオーバーをどのように容易にすることができますか? –
ようこそ。それがクラッシュした場合に再起動する 'A'の監視エージェント(ウォッチドッグ)を持たせるのは簡単ですし、どんな方法でも' A'から 'B'へのフェールオーバーを行うのは簡単でしょう。メッセージは失われず、キューに入れられ、消費者が再び起きたときに配信されます。 – cantSleepNow
OKです。 RabbitMQは高度なフェールオーバー機能を提供していますか?私は管理プラグインとREST APIがあることを知っていますが、それはちょうど監視(afaik)です。どのようなプラグイン/ライブラリ/ツール(RabbitMQまたはサードパーティ製)が、自動的にフェイルオーバーを開始することをお勧めしますか? –