例: VM コネクタでの応答のパブリッシュおよび取得方法

ときには、応答を取得したほうがよい場合があります。その場合は publish-consume 操作を使用して、相手側でメッセージが処理されるのを待機し、応答を提供します。この操作は、それ以外の点では、publish とまったく同じです。

パブリッシュおよびリスンの例を基にして、応答を送信するとします。例を次のように変更できます。

<flow name="publish">
  <http:listener path="/json-here" allowedMethods="POST"
    config-ref="httpListener" />
  <vm:publish-consume queueName="#[payload.destination]" config-ref="vm">
    <vm:content>#[payload.body]</vm:content>
  </vm:publish>
  <logger/>
</flow>

次の例では、応答を作成する DataWeave 式が <vm:listener> ソースによって埋め込まれています。

次に示す body および origin 値を使用する単純な形式のように、定義済みの JSON 形式の応答が必要だとします。

<flow name="listener">
  <vm:listener queueName="queue" config-ref="vm">
    <vm:response>
      <vm:content><![CDATA[#[
                    %dw 2.0
                    output application/json
                    ---
                    {
                    	"origin": "Awesome Mule 4 VM connector",
                      "body" : payload
                    }
                 ]]>
      </vm:content>
    </vm:response>
  </vm:listener>
  <flow-ref name="theIntegrationLogic" />
</flow>

エラー処理

受信フローが失敗すると、この操作は VM:PUBLISH_CONSUMER_FLOW_ERROR エラーを発生させます。このエラーの説明は、フローが発生させた元のエラーのものになります。

さらに、受信フローが予期された時間内で応答しない場合は、VM:QUEUE_TIMEOUT も発生する場合があります。

Was this article helpful?

💙 Thanks for your feedback!