以下の例は、異なるアプリケーション間でメッセージを送信する 2 つの方法を示しています。
-
リスナーを使用して最初のアプリケーションからメッセージを受信し、Publish 操作を使用して受信したメッセージを 2 番目のアプリケーションに提供します。
-
2 番目のアプリケーションで Publish 操作を使用してメッセージキューにメッセージをプッシュし、Consume 操作を使用してメッセージをコンシュームします。
どちらの場合でも、2 つのアプリケーションが同じドメインに存在している必要があります。
2 番目のアプリケーションにメッセージをパブリッシュする
-
次のように、ドメインに VM 設定を作成します。
<mule-domain xmlns="http://www.mulesoft.org/schema/mule/domain" xmlns:vm="http://www.mulesoft.org/schema/mule/vm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd http://www.mulesoft.org/schema/mule/domain http://www.mulesoft.org/schema/mule/domain/current/mule-domain.xsd"> <vm:config name="sharedVMConfig"> <vm:queue queueName="sharedQueue" queueType="PERSISTENT" /> </vm:config> </mule-domain> -
同じドメインのアプリケーションにリスナーを配置します。
<flow name="crossAppListener"> <vm:listener queueName="sharedQueue" config-ref="sharedVMConfig" /> <logger /> </flow> -
同じドメインの 2 番目のアプリケーションからメッセージをパブリッシュします。
<flow name="crossAppRequester"> <vm:publish queueName="sharedQueue" config-ref="sharedVMConfig" /> </flow>
この例では、Listener および Publish 操作で同じキュー (sharedQueue) と同じ設定 (sharedVMConfig) を参照しています。
パブリッシュされたメッセージをキューから取得する
<vm:listener> メッセージソースを使用する代わりに、<vm:consume> 操作を使用して VM キューにあるメッセージをコンシュームできます。この操作では、メッセージをオンデマンドでコンシュームし、次のことが可能です。
-
特定の条件に応じて異なるキューから動的にコンシュームする。
-
アプリケーションがメッセージをコンシュームするリズムをより厳しく制御する。
キューのパブリッシュされたメッセージをコンシュームする手順は、次のとおりです。
-
次のように、ドメインに VM 設定を作成します。
<mule-domain xmlns="http://www.mulesoft.org/schema/mule/domain" xmlns:vm="http://www.mulesoft.org/schema/mule/vm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd http://www.mulesoft.org/schema/mule/domain http://www.mulesoft.org/schema/mule/domain/current/mule-domain.xsd"> <vm:config name="sharedVMConfig"> <vm:queue queueName="sharedQueue" queueType="PERSISTENT" /> </vm:config> </mule-domain> -
同じドメインの 2 番目のアプリケーションからメッセージをパブリッシュします。
<flow name="crossAppRequester"> <vm:publish queueName="sharedQueue" config-ref="sharedVMConfig" /> </flow> -
メッセージがパブリッシュされたら、キューからメッセージを取得します。
<flow name="queueConsume"> <vm:consume queueName="sharedQueue" config-ref="sharedVMConfig" /> <logger /> </flow>
この例では、Publish および Consume 操作で同じキュー (sharedQueue) と同じ設定 (sharedVMConfig) を参照しています。