VM Connector のメッセージのパブリッシュと応答の取得の例 - Mule 4

ときには、応答を取得したほうがよい場合があります。その場合は ​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​ も発生する場合があります。