10 日目: RabbitMQ の作業モード

RabbitMQ でサポートされるメッセージ モード:

 

依存関係のインポート:

<依存関係>

        <groupId>com.rabbitmq</groupId>

        <artifactId>amqp-client</artifactId>

</依存>

ツールのパッケージ:

第1タイプ:ベーシックモデル(直結)

 P: プロデューサー、メッセージを送信するプログラム

C: コンシューマー、メッセージの受信者、メッセージの到着を待っている、メッセージを消費する

キュー (赤い部分): メッセージ キュー。メールボックスと同様に、メッセージをキャッシュし、プロデューサーがメッセージを配信し、コンシューマーがメッセージを取得できます。

開発プロデューサー:

 開発者の消費者:

結果 (プロデューサー):

印刷(消費者):

2つ目:ワークキューモデル(ワークキュー)

        ワーク キュー: タスク モデル。メッセージの処理に時間がかかる場合、メッセージの生成速度が消費の速度よりもはるかに速くなり、メッセージが蓄積される可能性があります。複数のコンシューマーを使用してキューにバインドし、一緒に消費することができます。

P: プロデューサー、メッセージを送信するプログラム

C1: コンシューマー、メッセージの受信者、メッセージの到着を待っている、メッセージを消費する

C2: コンシューマー、メッセージの受信者、メッセージの到着を待っている、メッセージを消費する

プロデューサー:

 コンシューマ 1:

コンシューマ 2:

結果 (プロデューサー):

印刷 (消費者 1)

        デフォルトでは、rabbitMQ は各メッセージをコンシューマーに順番に送信し、各コンシューマーは平均して同じ数のメッセージを受信します. このメッセージ配布方法は循環的です.

メッセージ自動確認の仕組み:

        メッセージの自動確認メカニズムが有効になっている場合、コンシューマはキューからすべてのメッセージを取得します。ただし、何らかの問題によりメッセージの処理中にコンシューマーが突然クラッシュした場合、メッセージが失われる可能性があります。メッセージ処理の過程で、コンシューマーがダウンした場合、未完成のメッセージを他のコンシューマーに引き渡して、メッセージの損失を回避できることが望まれます。

        メッセージの損失を避けるために、RabbitMQ はメッセージの確認をサポートしています。コンシューマーは、特定のメッセージが受信、処理され、RabbitMQ が自由に削除できることを RabbitMQ に通知するために確認応答を返します。

        コンシューマーが何らかの理由 (チャネルが閉じられた、接続が閉じられた、TCP 接続が失われた) で ack を送信せずにクラッシュした場合、RabbitMQ はメッセージが完全に処理されていないことを認識し、再度キューに入れます。他の消費者が同時にオンラインである場合、他の消費者にすぐに再配布されます。

より多くの作業を行える人: メッセージ処理能力の高いコンシューマーはより多くのタスクを処理し、処理能力の低いコンシューマーはより少ないタスクを分配します

達成:

        1. メッセージの自動確認をオフにする

        2. 同じコンシューマーに同時に 1 つのメッセージのみを送信するようにサーバーを設定する

        3. メッセージの手動確認をオンにする

3 番目のタイプ: パブリッシュ/サブスクライブ モデルのファンアウト (パブリッシュ/サブスクライブ モデル)

ファンアウト: ブロードキャスト モード;

メッセージ送信プロセス:

        複数のコンシューマーを持つことができます

        各コンシューマーには独自のキューがあります

        各キューは交換にバインドする必要があります

        プロデューサーは取引所にのみメッセージを送信できます

        スイッチは与えるキューを決定しますが、プロデューサーは決定できません

        交換はメッセージをすべてのバインドされたキューに送信します

        キュー内のすべてのコンシューマーがメッセージを取得できます (1 つのメッセージが複数のコンシューマーによって消費される可能性があることに注意してください)。

プロデューサー:

消費者:

         RabbitMQ メッセージ モデルのコア アイデア (コア アイデア): プロデューサーは、RabbitMQ の交換センター (Exchange) にメッセージを送信します. Exchange の片側はプロデューサーであり、反対側は 1 つ以上のキューです. Exchange は、特定のキューに送信されるか、直接破棄されるメッセージのライフ サイクルを決定します。

4 番目のタイプ: パブリッシュ/サブスクライブ モデルのルーティング (ルーティング モード)

ルーティング: パブリッシュ/サブスクライブ モデル - 直接接続。

必須:

        キューはスイッチにバインドされています。任意にバインドすることはできませんが、ルーティング キーを指定する必要があります

        プロデューサーがメッセージを交換に送信するとき、メッセージのルーティング キーを指定する必要があります。

P: プロデューサーは、スイッチに送信するときにルーティング キーを指定します。

X: プロデューサー メッセージを受信し、ルーティング キーに一致するキューにメッセージを配信します。

C1: ルーティングが必要なキーが error であるメッセージをキューが指定しているコンシューマ

C2: キーが info であるメッセージを指定するキューを持つコンシューマをルーティングする必要があります

プロデューサー:

 消費者:

 5 番目のタイプ: パブリッシュ/サブスクライブ モデルのトピック (トピック モード)

トピック (トピック モード): トピック タイプ スイッチを使用すると、キーのルーティング時にキュー バインドでワイルドカードを使用できます。

 ワイルドカード:

        *: 1 つの単語のみに一致

        #: ゼロ、1 つまたは複数の単語に一致

プロデューサー:

 消費者:

おすすめ

転載: blog.csdn.net/qq_35056891/article/details/127173439