Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMule 4 の Until Successful コンポーネントでは、一部のプロセスの処理方法が Mule 3 の場合と異なります。これらの変更に関連する一部の要素と属性は、Mule 4 には存在しません。Mule 4 では、異なる属性やコンポーネントを使用して同じ機能を実行できるか、Mule 4 でその機能を設定する必要がなくなったかのいずれかです。
Until Successful コンポーネントの手動移行では、以下の変更を行います。
<processor-chain/> 要素をすべて削除する。
secondsBetweenRetries 属性を millisBetweenRetries に置き換える。
failureExpression を削除し、代わりに Mule 4 の検証プロセッサーを使用する。
deadLetterQueue-ref 属性を Mule 4 のエラーハンドラーに置き換える。
<threading-profile/> 要素をすべて削除する。
ackExpression 属性を削除し、代わりに Set Payload コンポーネントを使用する。
synchronous 属性をすべて削除する。
以下の各セクションで、これらの変更について説明します。
Mule 3 では、Until Successful スコープの内側で複数のプロセッサーを実行するには、プロセッサーチェーン (<processor-chain/>) の内側にプロセッサーをラップする必要がありました。Mule 4 の Until Successful では複数のプロセッサーがサポートされ、プロセッサーチェーンは必要ありません。
<flow name="untilFlow">
<until-successful>
<processor-chain>
<logger message="#[1]"/>
<logger message="#[2]"/>
</processor-chain>
</until-successful>
</flow>
Mule 4 の例には、<processor-chain/> 要素がありません。
<flow name="untilFlow">
<until-successful>
<logger message="#[1]"/>
<logger message="#[2]"/>
</until-successful>
</flow>
Mule 3 の secondsBetweenRetries 属性は Mule 4 から削除されました。Mule 4 では millisBetweenRetries 属性を使用できます。
<flow name="untilFlow">
<until-successful secondsBetweenRetries="10">
<logger message="#[1]"/>
</until-successful>
</flow>
Mule 4 の例では、secondsBetweenRetries="10" が millisBetweenRetries="10000" に置き換わっています。
<flow name="untilFlow">
<until-successful millisBetweenRetries="10000">
<logger message="#[1]"/>
<logger message="#[2]"/>
</until-successful>
</flow>
failureExpression 属性は削除されました。検証式を設定する検証プロセッサーに置き換えることができます。
<flow name="untilFlow">
<until-successful failureExpression="#[regex:(?i).*error]">
<logger message="#[1]"/>
</until-successful>
</flow>
Mule 3 の例にある failureExpression 設定は、Mule 4 では <validation:is-false/> 設定に置き換わります。
<flow name="untilFlow">
<until-successful>
<logger message="#[1]"/>
<validation:is-false expression="#[regex:(?i).*error]"/>
</until-successful>
</flow>
Mule 3 の deadLetterQueue-ref 属性では、すべての再試行が失敗したら、配信不能メッセージをエンドポイントまたはプロセッサーに送信できます。Mule 4 では、代わりにエラーハンドラーを使用して、すべての RETRY_EXHAUSTED 例外をキャッチし、メッセージをそのエンドポイントまたはプロセッサーに送信できます。
<vm:endpoint name="dlqChannel" path="dlq" />
<flow name="untilFlow">
<until-successful deadLetterQueue-ref="dlqChannel">
<logger message="#[1]"/>
</until-successful>
</flow>
Mule 4 の例では、エラーハンドラー <error-handler/> 内の On Error Propagate (エラー時に伝搬) <on-error-propagate/> 要素を使用して dlqChannel を参照します。
Mule 4:
<vm:endpoint name="dlqChannel" path="dlq" />
<flow name="untilFlow">
<until-successful>
<logger message="#[1]"/>
</until-successful>
<error-handler>
<on-error-propagate type="RETRY_EXHAUSTED">
<outbound-endpoint ref="dlqChannel"/>
</on-error-propagate>
</error-handler>
</flow>
Mule 3 では、<threading-profile/> 子要素を使用して、実行スレッドを調整できます。Mule 4 では、実行エンジンでいくつかの変更が行われました。
Mule 4 では非ブロックアーキテクチャとの関連付けにより、スレッドを手動で調整する必要がなくなりました。
<flow name="untilFlow">
<until-successful>
<threading-profile maxThreadsActive="45" maxThreadsIdle="5" threadTTL="52" threadWaitTimeout="60"/>
<logger message="#[1]"/>
</until-successful>
</flow>
Mule 4 の例では、<threading-profile/> 要素を削除します。
<flow name="untilFlow">
<until-successful>
<logger message="#[1]"/>
</until-successful>
</flow>
Mule 3 の ackExpression 属性は、応答ペイロードの同期生成を設定します。この属性は Mule 4 には存在しません。アプリケーションでこの動作を実行するには、Until Successful の後に Set Payload コンポーネントを設定できます。
<flow name="untilFlow">
<until-successful ackExpression="#[message:correlationId]">
<logger message="#[1]"/>
</until-successful>
</flow>
Mule 4 の例では、Set Payload <set-payload/> コンポーネントを使用して #[message:correlationId] 値を設定します。
<flow name="untilFlow">
<until-successful>
<logger message="#[1]"/>
</until-successful>
<set-payload value="#[message:correlationId]"/>
</flow>