1.AMQP (Advanced Message Queuing Protocol) は、アプリケーション層プロトコルのオープン標準であり、メッセージ指向ミドルウェア用に設計されています。
2.RabbitMQ はオープンソースの AMQP 実装であり、サーバー側は Erlang 言語で書かれています。
3.チャンネル
チャンネルは、RabbitMQ を扱うための最も重要なインターフェースであり、Queue の定義、Exchange の定義、Queue と Exchange のバインド、ニュースの投稿など、ほとんどの業務操作が Channel インターフェースで完了します。 。
4.Exchange (プロデューサーはメッセージを Exchange (交換) に送信し、Exchange はメッセージを 1 つ以上のキューにルーティングします (またはキューを破棄します)。 RabbitMQ で一般的に使用される Exchange タイプには、ファンアウト、ダイレクト、トピック、ヘッダーが含まれます。 4)
5.Queue (RabbitMQ の内部オブジェクト、メッセージの保存に使用)
6. 基本的な動作原理
クライアント (プロデューサー) メッセージ送信 --> 交換 (メッセージを対応するキューに保存する)さまざまなタイプを通じて)--> キュー
クライアント (コンシューマ) は、サブスクリプションを通じてキュー内のメッセージを消費します。
上記の基本概念は、 RabbitMQ の基本概念の詳細な紹介からまとめられています
1. erlang をダウンロードしてインストールします (私は otp_win64_19.3 バージョンを使用します)
ダウンロード アドレス(操作に従って) システムは 32 ビットまたは 64 ビットを選択します)
2. Rabbitmq-server をダウンロードしてインストールします (私は Rabbitmq-server-3.6.10 バージョンを使用しています)
ダウンロード アドレス
インストール後、次の
を参照してください。インストール ディレクトリ
次に、enable DOS コマンド
a を使用して、sbin ディレクトリに移動します。私のインストール ディレクトリは D:RabbitMQServerrabbitmq_server-3.6.10sbin です。D: Enter を入力し、cd RabbitMQServerrabbitmq_server-3.6.10sbin
b. コマンド: rabbitmqctl status
を使用して、インストールが成功したかどうかを確認します。 、ブラウザに「http://127.0」と入力し、「0.1:15672/
」と入力し、ゲストアカウント「ゲスト」パスワード「ゲスト」を入力してログインに成功します。
ゲスト アカウントは管理者アカウントであり、Exchange、キュー、管理者を追加できます。ただし、通常はゲスト アカウントを使用せず、引き続きコマンドを使用してアカウントと権限を追加します。d: ユーザーの追加:
rabbitmqctl.bat add_user ユーザー名 パスワード
e: 「スーパー管理者」ロールを追加:
rabbitmqctl.bat set_user_tags ユーザー名 管理者
mymq アカウントもスーパーです管理者は、仮想ホストにアクセスできます: アクセスなし。まだアクセスできない仮想マシンを確認して、仮想マシンを追加できます。
f: 仮想マシンを追加します:rabbitmqctl add_vhost vhostName
次に、myvhost 仮想マシンにはユーザーがありません。次に、アカウントを仮想マシンにバインドします。
g: 仮想マシンとユーザーの権限を定義します:rabbitmqctl set_permissions -p 仮想マシン名 アカウント名 ".*" ".*" ".*"
h: 習慣で、私は通常ゲストを削除しますアカウント:
rabbitmqctl.bat delete_user ユーザー名さて、再度管理ページにログインすると正常になり、実際の戦闘が始まります。 EasyNetQはRabbitMQ.Clientに依存しているのでプロジェクトにインストールします。 モデルには、キュー名とExchange名を定義するキュー機能があります。次に、Publish メソッドを直接使用して、モデルで指定されたスイッチを介して指定されたキューにメッセージをプッシュします。 コードを実行して、MQ 管理ページを確認してください。 Model で指定されたスイッチ TestQueue.Exchange、Type:topic、 features:D が作成されました。 D:Durable は、デフォルトで作成されるスイッチが durable であることを示します。 メッセージがサブスクライブされていないため、対応するキューはキューに表示されません。 購読コードに while(true) を付ける必要があるのはなぜですか? コンソール プログラムはフラッシュで実行され、実際には MQ メッセージをサブスクライブできないため、目的はコンソール プログラムを Windows サービスとしてシミュレートすることです。 実際の開発では、Topselfを使ってコンソールプログラムをWindowsサービスに公開するのが一般的です。Topselfについては、後で時間があるときに学習ブログを書きます。 先ほどの公開操作を繰り返して、プロセス全体をテストします。 このようにして、メッセージは Test から始まるすべての Queue キューに送信されます。 は、送受信を通じて指定されたキューにメッセージを送信できます。
EasyNetQの基本的な使い方
EasyNetQをプロジェクトにインストール
ニュースを公開
購読購読メッセージ
トピックをカスタマイズする
SendとReceive
以上がRabbitMQ の基本概念と原則の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。