VMを使用したメッセージ処理

スポンサーリンク

VM Connectorについて

Mule内で使用できるVM Connectorは仮想マシン用 Anypoint Connectorであり、キューを使用してメッセージ処理を行う通信管理が可能となります。キューにPublishすることでそのイベントを拾うことができます。

今回使用するコンポーネント

コンポーネントアイコン・領域用途
PublishPublishVMキューにメッセージを送信する
Publish consumeIs TrueVMキューにメッセージを送信し、Listenerから応答が来るまで待機する
ListenerVM ListenerキューにPublishされたメッセージを受信しフローを開始する

PublishとListenerの基本的な使い方

Connector configuration

VMのコンフィグレーションには使用するVMのキューを登録します。Queue typeにはキューの種類を選択できます。

TRANSIENT→一時的なキュー。高速だが信頼性は低い。
PERSISTENT→永続的なキュー。速度はTRANSIENTに劣るが、信頼できるキュー。

VM Config

送信側のフロー

送信側のフローはVMのPublishまたはPublish consumeを使用してキューにメッセージを送信します。HTTP Listener等のフローからPublishコンポーネントを配置して、コンフィグレーションで登録したキューを指定します。

送信側Publishフロー

受信側のフロー

受信側にはVMのListenerを配置し、送信側で指定したキューを設定します。

受信側リスナーフロー

PublishとPublish consumeの違い

PublishとPublish consumeの違いはメッセージ処理を待つか待たないかの違いになります。Publishを使用した場合は非同期、Publish consumeは同期になります。

上記のフローをPublishで実行した場合、ログは以下のように出力されます(日時などの細かい表記は割愛してます)。

PublishFlow Start
PublishFlow End
VMListenerFlow Start
VMListenerFlow End

VMListenerFlow StartがPublishFlow Endより後に来ているので、Publish後すぐにLoggerが実行されていることが分かります。

次に、上記のフローをPublishからPublish consumeに置き換えてみます。PublishConsumeFlowのStartとEndの間にメッセージ処理のログが入っているため、同期された状態でメッセージ処理されていることが分かります。

PublishConsumeFlow Start
VMListenerFlow Start
VMListenerFlow End
PublishConsumeFlow End

このように、PublishとPublish consumeの違いは同期か非同期かの違いですので、必要に応じて使い分けていきましょう。

MuleSoft
スポンサーリンク

コメント