メッセージキューの概要
メッセージキューフレームワーク(MQF)は、モジュールがキューにメッセージを公開できるようにするシステムです。 また、 消費者 はメッセージを非同期で受信します。 この MQF は、 RabbitMQ メッセージを送受信するためのスケーラブルなプラットフォームを提供するメッセージングブローカーとして。 また、未配信メッセージを保存するメカニズムも含まれています。 RabbitMQ は、Advanced Message Queuing Protocol (AMQP) 0.9.1 仕様に基づいています。
次の図に、メッセージキューフレームワークを示します。
-
パブリッシャーは、メッセージを取引所に送信するコンポーネントです。 公開先の交換と、送信するメッセージの形式がわかります。
-
交換機はパブリッシャーからメッセージを受信し、キューに送信します。 ただし RabbitMQ は複数の種類の交換をサポートしていますが、Commerceではトピック交換のみを使用します。 トピックにはルーティングキーが含まれます。ルーティングキーには、ドットで区切られたテキスト文字列が含まれます。 トピック名の形式は、です。
string1.string2
:例:customer.created
またはcustomer.sent.email
.ブローカーでは、メッセージ転送のルールを設定する際にワイルドカードを使用できます。 アスタリスク(
*
)に変更します 1 文字列またはポンド記号(#
)を選択して、0 個以上の文字列を置き換えます。 例:customer.*
次の条件でフィルタリングしますcustomer.create
およびcustomer.delete
が、ではないcustomer.sent.email
. しかしcustomer.#
次の条件でフィルタリングしますcustomer.create
,customer.delete
、およびcustomer.sent.email
. -
キューは、メッセージを格納するバッファです。
-
消費者がメッセージを受信します。 使用するキューがわかります。 メッセージのプロセッサを特定のキューにマップできます。
基本的なメッセージキューシステムは、を使用せずにセットアップすることもできます RabbitMQ. このシステムでは、MySQL アダプタがメッセージをデータベースに格納します。 3 つのデータベーステーブル(queue
, queue_message
、および queue_message_status
)メッセージキューのワークロードを管理します。 Cron ジョブは、コンシューマーがメッセージを受信できるようにします。 このソリューションは拡張性に欠けます。 RabbitMQ 可能な限り使用してください。