例: VM コネクタを使用したメッセージのパブリッシュおよびリスン方法

この例は、異なるフローによって受信されるメッセージをパブリッシュする方法を示しています。

  1. <vm:listener> をメッセージソースとして使用するフローを定義します。次に例を示します。

    <flow name="listener">
       <vm:listener queueName="myQueue" config-ref="vm"/>
       <flow-ref name="yourIntegrationLogic"/>
    </flow>
  2. 新しく作成されたキューにメッセージをフィードします。

    たとえば、JSON ペイロードを指定する HTTP 要求によってトリガされるフローがあり、その JSON オブジェクトの body 属性を抽出してキューにパブリッシュするとします。

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

    この例は、次を示しています。

    • publish 操作は他のフローで作成したキューを参照する。

    • content パラメータにより、DataWeave を使用して (メッセージへの副作用がなく) 送信する値を作成できる。content を指定しない場合、ペイロード全体が送信されます。

    • publish 操作は一方向である。フローはメッセージがキューに投稿されたら続行されます。リスンする側の処理は非同期で発生します。その結果についての通知は受信しません。

    • publish 操作で指定された queueName には、同じキューを参照する、一致する <vm:listener> 要素が必要である。リスナが存在しないキューにパブリッシュしようとすると、エラーが発生します。この動作は、誰もリスンしていないキューにメッセージを送信することによって引き起こされるメッセージの損失を防ぎます。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub