1. 問題の原因
特定のサービスの BI-collector-xx キューがブロックされているため、rabbitMQ クラスター サービス全体が利用できなくなり、複数のアプリケーションの MQ プロデューサー サービスが一時停止状態になり、広範囲のシステムに影響を及ぼし、仕事。このとき、運用保守担当者は、緊急事態に対処してシステムを復旧させるため、比較的容赦なくブロックされたキュー情報を大量にクリアし、クラスタ全体を再起動しました。RabbitMQ の実運用障害問題の修復と分析
欠陥全体を検討する過程で、私は心の中に多くの疑問を抱きました。少なくとも次の問題がありました。
- キューがブロックされるのはなぜですか?
- なぜ特定のキューのブロックが他のキューの動作に影響を与える(つまり、複数のキュー間の相互影響)のでしょうか?
- アプリケーションの MQ キューに問題があると、アプリケーションが使用できなくなるのはなぜですか?
2. テストキューがブロックされている
ある週末、自宅でテスト環境を見つけ、rabbitmq をインストールしてこのプロセスを再現し、シミュレーション テストを実行します。
プロデューサーとコンシューマーをそれぞれ使用して 2 つのテスト アプリケーション デモ (2 つのプロジェクト アプリケーションを想定) を作成し、それぞれキュー testA と testB を使用します。
本番環境を可能な限り復元するために、最初のテストでは同じ仮想ホストを使用し、後で別の仮想ホストを設定しました。
プロデューサーAさんのサンプルコードは以下の通りです
消費者A