VM Connectorについて
Mule内で使用できるVM Connectorは仮想マシン用 Anypoint Connectorであり、キューを使用してメッセージ処理を行う通信管理が可能となります。キューにPublishすることでそのイベントを拾うことができます。
今回使用するコンポーネント
コンポーネント | アイコン・領域 | 用途 |
---|---|---|
Publish | VMキューにメッセージを送信する | |
Publish consume | VMキューにメッセージを送信し、Listenerから応答が来るまで待機する | |
Listener | キューにPublishされたメッセージを受信しフローを開始する |
PublishとListenerの基本的な使い方
Connector configuration
VMのコンフィグレーションには使用するVMのキューを登録します。Queue typeにはキューの種類を選択できます。
TRANSIENT→一時的なキュー。高速だが信頼性は低い。
PERSISTENT→永続的なキュー。速度はTRANSIENTに劣るが、信頼できるキュー。
送信側のフロー
送信側のフローはVMのPublishまたはPublish consumeを使用してキューにメッセージを送信します。HTTP Listener等のフローから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の違いは同期か非同期かの違いですので、必要に応じて使い分けていきましょう。
コメント