Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMule アプリケーションでエラーが発生すると、Error Handler コンポーネントでエラーが HTTP:NOT_FOUND
、DB:CONNECTIVITY
、ANY
(すべての Mule エラーのデフォルト) など、Mule エラーに一致した最初の On-Error コンポーネント (On Error Continue または On Error Propagate) 設定にルーティングされます。エラーについてエラー処理が設定されていない場合、アプリケーションはデフォルトのエラー処理プロセスに従います。
On-Error コンポーネントでは、オーナーに与える影響で違いがあります。つまり、定義されている Flow または Try スコープです。また、On-Error コンポーネントはグローバルエラーハンドラー内で定義することができ、Mule アプリケーション全体に影響します。
Mule アプリケーションのデザイン中にエラーの可能性を識別して処理できるように、On-Error コンポーネントではアプリケーションで設定される Runtime Engine および操作によってスローされる可能性があるエラーをリストしています。処理するエラーを選択できます。
エラー種別に基づく照合:
On-Error コンポーネントでは、選択したエラー種別に基づいて照合を実行できます。選択可能なエラー種別のリストは、On-Error コンポーネントが適用されるフローまたはスコープ内のモジュールおよびコネクタ操作に応じて異なります。また、ランタイムでスローされる可能性がある EXPRESSION
エラーと STREAM_MAXIMUM_SIZE_EXCEEDED
エラーもリストしています。
条件に基づく照合 (より高度なユースケース向け):
On-Error コンポーネントの When 項目で定義した when
条件に基づいてエラー照合を実行できます。たとえば、コンポーネントを「fatal (致命的)」という語が含まれるエラーメッセージがある致命的なエラーにマップすることができます。
<on-error-continue
enableNotifications="true" logException="true"
type="ANY"
when='error.cause.message contains "fatal"'/>
この例では、when
式に一致するすべてのエラーが on-error-continue
によって処理されます。エラーハンドラーによって指定された種別および条件に一致するエラーのみが処理されるように、type="HTTP:CONNECTIVITY"
などの制限種別を追加することもできます。
照合条件は、On-Error コンポーネントがエラーハンドラーに存在する順番で連続的に評価されます。たとえば VALIDATION:NOT_NULL
をある方法で処理し、その他のすべてのエラーを別の方法で処理する場合は、残りのエラーを捕捉するコンポーネント (2 つ目の On-Error コンポーネントで ANY
として識別) の前に、そのエラーの On-Error コンポーネント設定を指定します。明示的に照合しないエラーまたは ANY を使用して捕捉するエラーでは、デフォルトのエラー処理が実行されます。
ほとんどの場合、On Error コンポーネントはスコープに似た Error Handler コンポーネント内で設定します。各フローには組み込みの Error Handler が 1 つだけ含まれますが、Error Handler には必要に応じて任意の数の On-Error コンポーネントを含めることができ、各 On-Error コンポーネントには Logger など、On-Error コンポーネントによって捕捉されたエラーを処理するコンポーネントを任意の数含めることができます。
Error Handler コンポーネントは Flow コンポーネントおよび Try コンポーネントに組み込まれているため、On-Error コンポーネントをフローのスコープ内または Try コンポーネント内で発生したエラーに使用できます。例は、「On-Error コンポーネントを使用したメッセージングエラーの処理」を参照してください。
On-Error コンポーネントは、Flow コンポーネントまたは Try スコープから参照される個別の Error Handler 設定で使用することもできます (「グローバルエラーハンドラーの参照」を参照)。
デフォルトでは、On-Error コンポーネントによって一致するエラーも記録され、エラーが発生した場合のエラーの通知も有効になります。これらの設定を無効にするには、Studio でコンポーネントのプロパティを変更するか、設定 XML を編集します。 Mule アプリケーションで通知リスナーを設定して、通知イベントに反応できるようにすることもできます。
フロー内の組み込み Error Handler コンポーネント内部で、エラー種別と式を照合する On -Error コンポーネントを 1 つ以上セットアップできます。次の例は、任意のフロー内で発生したエラーを処理する一般的な構造を示しています。1 つのフローでは、Error Handler コンポーネントの On Error Continue (on-error-continue
) を使用します。もう 1 つのフローでは On Error Propagate (on-error-propagate
) を使用します。
<flow name="catch">
<!-- flow logic -->
<error-handler>
<on-error-continue>
<!-- error handling logic -->
</on-error-continue>
</error-handler>
</flow>
<flow name="rollback">
<!-- flow logic -->
<error-handler>
<on-error-propagate>
<!-- error handling logic -->
</on-error-propagate>
</error-handler>
</flow>
例は、「On-Error コンポーネントを使用したメッセージングエラーの処理」を参照してください。
グローバルに公開してフローおよび Try スコープで参照することでエラーハンドラーを共有できるのと同じように、On-Error コンポーネントを再利用することもできます。On-Error コンポーネントをグローバルに定義して名前を付けてから、Error Handler コンポーネントから参照できます。
<on-error-propagate name="sharedPropagateHandler">
<logger message="An unhandled error has occurred."/>
</on-error-propagate>
<on-error-continue type="EXPRESSION" name="sharedContinueHandler">
<logger message="An expression failed to evaluate."/>
</on-error-continue>
<error-handler name="reusingHandlers">
<on-error ref="sharedContinueHandler"/>
<on-error-continue type="ROUTING">
<logger message="An expression failed to evaluate."/>
</on-error-continue>
<on-error ref="sharedPropagateHandler"/>
</error-handler>
他の再利用の例は、「グローバルエラーハンドラーの参照」を参照してください。
次のエラーハンドラーは、VALIDATION:NOT_NULL
エラーに対して { "messageANY" : "Some other error" }
ではなく { "MyError": "value was expected to be null" }
を生成するように設定されています。文字列 value was expected to be null
は VALIDATION:NOT_NULL
エラーの説明です。Is Null コンポーネントがこのエラーをスローできます。
Is Null は Validation Module に属しています。
<error-handler >
<on-error-continue
enableNotifications="true"
logException="true"
type="VALIDATION:NOT_NULL">
<ee:transform >
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
{
MyError : error.description as String
}]]></ee:set-payload>
</ee:message>
</ee:transform>
</on-error-continue>
<on-error-continue
enableNotifications="true"
logException="true"
type="ANY">
<ee:transform>
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
"messageANY" : "Some other error"
}
]]></ee:set-payload>
</ee:message>
</ee:transform>
</on-error-continue>
</error-handler>
項目 | 値 | 説明 |
---|---|---|
Type (種別) ( |
Mule エラー種別 |
この On-Error 戦略によって処理されるエラーを定義する、Mule エラー種別のカンマ区切りのリスト。 |
When (次の場合) ( |
DataWeave 式 |
この On-Error 戦略の実行をトリガーする条件を定義する一致式。式はブール値 ( |
Enable Notifications (通知を有効化) ( |
Boolean (ブール) |
エラーが発生したときに、この戦略で |
Log Exception (例外を記録) ( |
ブール。 |
この戦略でエラーが処理される前に、そのエラーをレベル |