RabbitMQ の基本的な紹介 (学習の概要)

基本的な考え方

1. ほとんどのアプリケーションでは、メッセージ サービス ミドルウェアを使用してシステムの非同期通信を改善し、デカップリング機能を拡張できます。

2. メッセージ サービスにおける 2 つの重要な概念:

メッセージ ブローカー (メッセージ ブローカー) と宛先 (宛先) メッセージ送信者がメッセージを送信すると、メッセージはメッセージ ブローカーによって引き継がれ、メッセージ ブローカーはメッセージが指定された宛先に確実に配信されるようにします。

3. メッセージキューには主に 2 つの形式の宛先があります。

1. キュー(queue):ポイントツーポイントのメッセージ通信(point-to-point)

2. トピック: パブリッシュ/サブスクライブメッセージ通信

4. ポイントツーポイント:

  • メッセージ送信者がメッセージを送信し、メッセージ エージェントがメッセージをキューに入れ、メッセージ受信者がキューからメッセージの内容を取得し、メッセージは読み取り後にキューから削除されます。
  • メッセージの送信者と受信者は 1 人だけですが、受信者が 1 人だけであるという意味ではありません

5. 公開および購読:

  • 送信者 (パブリッシャー) がトピックにメッセージを送信し、複数の受信者 (サブスクライバー) がトピックをリッスン (サブスクライブ) し、メッセージの到着と同時にメッセージを受信します。

6. JMS (Java Message Service) JAVA メッセージ サービス:

  • JVMメッセージブローカーに基づく仕様。ActiveMQ と HornetMQ は JMS 実装です

7. AMQP(アドバンストメッセージキュープロトコル)

  • 高度なメッセージ キュー プロトコル。メッセージ ブローカーの仕様でもあり、JMS と互換性があります。
  • RabbitMQ は AMQP の実装です

8. スプリングサポート

  • spring-jms は JMS のサポートを提供します
  • spring-rabbit は AMQP のサポートを提供します
  • メッセージ ブローカーに接続するには、ConnectionFactory の実装が必要です
  • メッセージを送信するための JmsTemplate、RabbitTemplate を提供する
  • @JmsListener (JMS)、@RabbitListener (AMQP) アノテーションは、メソッド上のメッセージ ブローカーによってパブリッシュされたメッセージをリッスンします。
  • @EnableJms、@EnableRabbit のサポートを有効にする

9. Spring Boot 自動構成

  • JmsAutoConfiguration
  • RabbitAutoConfiguration

10. 市販のMQ製品

  • ActiveMQ、RabbitMQ、RocketMQ、Kafka

 

RabbitMQ の概要:

RabbitMQ は、erlang によって開発された AMQP (Advanved Message Queue Protocol) のオープンソース実装です。

核となるアイデア

メッセージ

メッセージ。メッセージは匿名であり、メッセージ ヘッダーとメッセージ本文で構成されます。メッセージ本文は不透明ですが、メッセージ ヘッダーは、routing-key (ルーティング キー)、priority (他のメッセージに対する優先度)、delivery-mode (メッセージが永続的なストレージを必要とする可能性があることを示す) などの一連のオプションの属性で構成されます。等

出版社

メッセージのプロデューサーは、メッセージを交換にパブリッシュするクライアント アプリケーションでもあります。

交換

プロデューサからメッセージを受信し、サーバー内のキューにルーティングする交換。

Exchange には、ダイレクト (デフォルト)、ファンアウト、トピック、ヘッダーの 4 つのタイプがあり、Exchange のタイプが異なると、メッセージを転送するための戦略も異なります。

メッセージ キュー。コンシューマに送信されるまでメッセージを保存するために使用されます。これはメッセージのコンテナーであり、メッセージの宛先です。メッセージは 1 つ以上のキューに入れることができます。メッセージは常にキュー内にあり、コンシューマーがキューに接続してメッセージを取り出すのを待っています。

バインディング

バインディングは、メッセージ キューと交換間の関連付けに使用されます。バインディングは、ルーティング キーに基づいて交換機とメッセージ キューを接続するルーティング ルールであるため、交換機はバインディングで構成されるルーティング テーブルとして理解できます。

Exchange と Queue のバインディングは、多対多の関係になる場合があります。

繋がり

TCP 接続などのネットワーク接続。

チャンネル(長時間接続)

チャネル: 多重接続における独立した双方向データ ストリーム チャネル。チャネルは、実際の TCP 接続で確立された仮想接続です。AMQP コマンドはチャネルを通じて送信されます。メッセージのパブリッシュ、キューへのサブスクライブ、メッセージの受信など、これらのアクションはすべてチャネルを通じて完了します。オペレーティング システムが TCP を確立および破棄すると非常にコストがかかるため、TCP 接続を再利用するためにチャネルの概念が導入されました。

消費者

メッセージのコンシューマは、メッセージ キューからメッセージを取得するクライアント アプリケーション プログラムを表します。

仮想ホスト

仮想ホスト。交換、メッセージ キュー、および関連オブジェクトのコレクションを表します。仮想ホストは、同じ認証および暗号化環境を共有するサーバーの別個のドメインです。各 vhost は基本的に、独自のキュー、スイッチ、バインディング、および許可メカニズムを備えた RabbitMQ サーバーのミニバージョンです。vhost は AMQP の概念の基礎であり、接続時に指定する必要があります。RabbitMQ のデフォルトの vhost は / です。

ブローカ

メッセージキューサーバーエンティティを表します

 

おすすめ

転載: blog.csdn.net/wzw_wwl/article/details/130987368