Mule エラーハンドラへの Exception Strategy (例外戦略) の移行

Mule 4.1 の標準サポートは 2020 年 11 月 2 日に終了しました。このバージョンの Mule は、拡張サポートが終了する 2022 年 11 月 2 日にその すべてのサポート​が終了しました。

このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。

標準サポートが適用されている最新バージョンの Mule 4 にアップグレード​することをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。

次の例で、Mule 3 のさまざまな Exception Strategy (例外戦略) の移行について説明し、Mule 4 の新しいエラー処理コンポーネントについて考えます。

これらの例では、​when​ 属性内で使用される式の移行については説明していません。 式の移行については​「DataWeave への MEL の移行」​、Java モジュールを使用して例外を分析する方法については​「Throwable の使用」​を参照してください。

Catch Exception Strategy (キャッチ例外戦略)

catch exception strategy (キャッチ例外戦略) は、すべてのエラーを受け入れる単一の ​on-error-continue​ コンポーネントを使用するエラーハンドラに相当します。これはデフォルトの設定です。

Mule 3 の例
<flow name="catch">
  <!-- flow logic -->
  <catch-exception-strategy>
    <!-- error handling logic -->
  </catch-exception-strategy>
</flow>
Mule 4 の例
<flow name="catch">
  <!-- flow logic -->
  <error-handler>
    <on-error-continue>
      <!-- error handling logic -->
    </on-error-continue>
  </error-handler>
</flow>

Rollback Exception Strategy (ロールバック例外戦略)

単純な (再配信のない) rollback exception strategy (ロールバック例外戦略) は、すべてのエラーを受け入れる単一の ​on-error-propagate​ コンポーネントを使用するエラーハンドラに相当します。これはデフォルトの設定です。

Mule 3 の例
<flow name="rollback">
  <!-- flow logic -->
  <rollback-exception-strategy>
    <!-- error handling logic -->
  </rollback-exception-strategy>
</flow>
Mule 4 の例
<flow name="rollback">
  <!-- flow logic -->
  <error-handler>
    <on-error-propagate>
      <!-- error handling logic -->
    </on-error-propagate>
  </error-handler>
</flow>

再配信の指定

  • idempotent-redelivery-policy​ は ​redelivery-policy​ に名前が変更されます。

  • org.mule.runtime.core.api.exception.MessageRedeliveredException​ は ​REDELIVERY_EXHAUSTED​ エラー種別に置き換わりました。

  • dead-letter-queue​ は削除されます。DLQ にパブリッシュするために実行されるアウトバウンド操作は、​REDELIVERY_EXHAUSTED​ エラーの処理の一部として実行する必要があります。次に例を示します。

    Mule 3 の例
    <idempotent-redelivery-policy maxRedeliveryCount="${maxRedeliveryAttempts}">
        <dead-letter-queue>
            <http:request ... />
        </dead-letter-queue>
    </idempotent-redelivery-policy>
    Mule 4 の例
    <redelivery-policy maxRedeliveryCount="${maxRedeliveryAttempts}"/>
    
    ...
    
    <error-handler>
        <on-error-propagate type="REDELIVERY_EXHAUSTED">
            <http:request ... />
        </on-error-propagate>
    </error-handler>
  • rollback-exception-strategy​ では ​maxRedelivery​ がサポートされなくなりました。​maxRedelivery​ を指定する ​<redelivery-policy>​ 要素は、​message-source​ 内に作成する必要があります。

Choice Exception Strategy (選択肢例外戦略)

内部に catch/rollback exception strategy (キャッチ/ロールバック例外戦略) を含む choice exception strategy (選択肢例外戦略) は、前述のとおり、例外戦略の種類に応じて on-error continue または on-error propagate を使用するエラーハンドラに相当します。

Mule 3 の例
<flow name="choice">
  <!-- flow logic -->
  <choice-exception-strategy>
      <rollback-exception-strategy when="#[some_expression_here]">
          <!-- error handling logic -->
      </rollback-exception-strategy>
      <catch-exception-strategy/>
    </choice-exception-strategy>
</flow>
Mule 4 の例
<flow name="choice">
  <!-- flow logic -->
  <error-handler>
    <on-error-propagate when="#[some_expression_here]">
      <!-- error handling logic -->
    </on-error-propagate>
    <on-error-continue/>
  </error-handler>
</flow>

Reference Exception Strategy (参照例外戦略)

ガイドラインに従って前述の例外戦略はすでに移行されているので、実際の参照の移行は ​error-handler​ 参照を追加するだけです。

Mule 3 の例
<flow name="reference">
  <!-- flow logic -->
  <exception-strategy ref="referencedHandler"/>
</flow>
Mule 4 の例
<flow name="reference">
  <!-- flow logic -->
  <error-handler ref="referencedHandler"/>
</flow>