Round Robin ルーター

Round Robin は、2 つ以上の処理ルートが含まれる Mule コンポーネントであり、フローでコンポーネントが実行されるたびに ​1 つ​のルートのみを実行します。Round Robin 内の各ルートは、1 つ以上のプロセッサーを含むことができるスコープです。Round Robin は最初のルートから Mule イベントへのルート内でプロセッサーの実行を開始し、結果をフローの次のプロセッサーに送信します。Round Robin は前回選択したルートを記録し、同じルートを連続して使用することはありません。たとえば、Round Robin が最初に実行されると、コンポーネントによって最初のルートが選択されます。次回の実行時には 2 番目のルートが選択されます。前回選択されたルートが最後のルートだった場合、最初のルートが実行されます。

Round Robin に達した Mule イベントのペイロード、変数、属性はルート内で処理を行うためにアクセスできます。ルート内の Mule イベントを変更すると、Round Robin 後のプロセッサーに伝播されます。

次の例は、Round Robin の機能を示しています。

<flow name="round-robin-ex" >
  <scheduler doc:name="Scheduler" > <!-- 1 -->
    <scheduling-strategy >
      <fixed-frequency frequency="10" timeUnit="SECONDS"/>
    </scheduling-strategy>
  </scheduler>
  <set-payload value="#[[1,2,3,4]]" doc:name="Set Payload" /> <!-- 2 -->
  <logger level="INFO" doc:name="Logger"
          category="PAYLOAD BEFORE ROUND ROBIN"
  	message="#[payload]"/>
  <round-robin doc:name="Round Robin" >
    <route > <!-- 3 -->
      <set-payload value="#[payload - 4]" doc:name="Set Payload" />
      <logger level="INFO" doc:name="Logger"
              message="#[%dw 2.0&#10;output application/json&#10;---&#10;{ 'r1' : payload}]"
	      category="ROUTE 1 PAYLOAD"/>
    </route>
    <route > <!-- 4 -->
      <set-payload value="#[payload + 5]" doc:name="Set Payload" />
        <logger level="INFO" doc:name="Logger"
                message="#[%dw 2.0&#10;output application/json&#10;---&#10;{'r2' : payload}]"
                category="ROUTE 2 PAYLOAD"/>
    </route>
  </round-robin>
  <logger level="INFO" doc:name="Logger"
           message="#[payload]"
	   category="PAYLOAD OUTSIDE ROUND ROBIN"/> <!-- 5 -->
</flow>
  1. Scheduler (​<scheduler/>​) が 10 秒ごとにフローを実行します。

  2. Set Payload (​<set-payload/>​) によって配列 ​[1,2,3,4]​ が提供されます。

  3. Round Robin の​​の Logger コンポーネントによって最初のペイロード ​[1,2,3,4]​ が出力されます。

  4. Round Robin の​最初​のルート (​<route/>​) である Set Payload コンポーネントによって、DataWeave 式 ​payload - 4​ を使用して最初のペイロードの最後の要素が削除され、そのルートの Logger によって生成されたペイロードがキー ​"r1"​ の値 ​{ "r1": [1,2,3] }​ として出力されます。

  5. Round Robin の ​2 つ目​のルート (​<route/>​) である Set Payload コンポーネントによって、DataWeave 式 ​payload + 5​ を使用して新しい要素が最初のペイロードに追加され、そのルートの Logger によって生成されたペイロードがキー ​"r2"​ の値 ​{ "r2": [1,2,3,4,5] }​ として出力されます。

  6. Round Robin の​​の Logger コンポーネントによって、Round Robin の実行によって処理されたルートのペイロードが出力されます。最初の実行では ​[1, 2, 3]​ が出力されます。次の実行では ​[1, 2, 3, 4, 5]​ が出力されます。その次には ​[1, 2, 3]​ が出力される、といった具合になります。

次の抜粋では、ログに Round Robin ルーターの 3 つの実行が表示されています。この例では、フローによって ID が ​4df56260​、​53eb1c50​、​59e12460​ で始まる Mule イベントが処理されます。(この例は読みやすくするために編集されています)。

...

INFO  2022-12-19 10:02:30,233 ...event: 4df56260-7fc7-11ed-957f-147ddaaf4f97]
      PAYLOAD BEFORE ROUND ROBIN: [1, 2, 3, 4]
INFO  2022-12-19 10:02:30,290 ...event: 4df56260-7fc7-11ed-957f-147ddaaf4f97]
      ROUTE 1 PAYLOAD: { "r1": [1,2,3] }
INFO  2022-12-19 10:02:30,291 ...event: 4df56260-7fc7-11ed-957f-147ddaaf4f97]
      PAYLOAD OUTSIDE ROUND ROBIN: [1, 2, 3]

INFO  2022-12-19 10:02:40,154 ...event: 53eb1c50-7fc7-11ed-957f-147ddaaf4f97]
      PAYLOAD BEFORE ROUND ROBIN: [1, 2, 3, 4]
INFO  2022-12-19 10:02:40,167 ...event: 53eb1c50-7fc7-11ed-957f-147ddaaf4f97]
      ROUTE 2 PAYLOAD: { "r2": [1, 2, 3, 4, 5] }
INFO  2022-12-19 10:02:40,168 ...event: 53eb1c50-7fc7-11ed-957f-147ddaaf4f97]
      PAYLOAD OUTSIDE ROUND ROBIN: [1, 2, 3, 4, 5]

INFO  2022-12-19 10:02:50,151 ...event: 59e12460-7fc7-11ed-957f-147ddaaf4f97]
      PAYLOAD BEFORE ROUND ROBIN: [1, 2, 3, 4]
INFO  2022-12-19 10:02:50,154 ...event: 59e12460-7fc7-11ed-957f-147ddaaf4f97]
      ROUTE 1 PAYLOAD: { "r1": [1, 2, 3] }
INFO  2022-12-19 10:02:50,154 ...event: 59e12460-7fc7-11ed-957f-147ddaaf4f97]
      PAYLOAD OUTSIDE ROUND ROBIN: [1, 2, 3]

...

参照

Round Robin によって、​<round-robin />​ 要素に対して設定可能な属性が提供されます。

名前 XML 説明

ビジネスイベント

tracking:enable-default-events="true"

デフォルトは ​false​ です。ビジネスイベントを追跡できるようにします。ビジネスイベントを参照してください。

スロー

  • MULE:ROUTING