2012-05-08 5 views
1

commit-transactionタグのexception-pattern属性は機能しますか?それは私がこの仕事を得ることができ、デフォルトの例外戦略、commit-transactionでexception-patternは機能しますか?

<commit-transaction exception-pattern="*"/> 

ではなく、この中には、次のとおりです。場合

<mule ...> 
    <jms:activemq-connector name="JMSConnector" brokerURL="${messaging.brokerURL}" /> 
    <flow name="aFlow"> 
     <jms:inbound-endpoint name="endpoint.Name" queue="${queue}" 
           exchange-pattern="request-response" 
           connector-ref="JMSConnector" /> 
     <component> 
      <spring-object bean="ThrowsBusinessException" /> 
     </component> 

     <default-exception-strategy> 
      <commit-transaction exception-pattern="com.BusinessException" /> 
     </default-exception-strategy> 
    </flow> 
</mule> 

:ここ

<commit-transaction exception-pattern="some.specific.Exception"/> 

は、コンフィギュレーションの関連スニペットですexception-pattern="*"を使用すると、JMSメッセージが再配信されません。ただし、より具体的なexception-patternを使用すると、メッセージは再配信されます。スローされた例外がBusinessExceptionの場合、メッセージを再配信する必要はありません。

これはミュールCEに3.2.1

感謝です!

+0

ミュールバージョン?受信エラー? –

+0

@David:今のメッセージの詳細。 – beluchin

+0

サイドノート:ActiveMQコネクタに 'specification =" 1.1 "'を指定します。 –

答えて

1

コアの問題は次のとおりです。コンポーネントによってスローされたすべての例外は、org.mule.component.ComponentExceptionでラップされます。

default-exception-strategyこの例外は、これまでのところその根本原因にこの例外をラップしませんでした。つまり、org.mule.component.ComponentExceptionにはexception-patternが適用されます。

IMOこれはMuleのバグです。私はMULE-6218を開いた。ために投票してください/それを見てください。

その間、Mule例外を処理する前にMule例外をアンラップするカスタム例外戦略を作成することができます。そのためには、ExceptionHelper.getRootException(ex)

+0

例外が特定のタイプのものである場合、カスタム例外戦略で例外を「呑み込む」(つまり、処理が完了したとみなす)方法の例を挙げることができますか? – beluchin

+0

Extend AbstractExceptionStrategyをオーバーライドし、isRollback()をオーバーライドしてこの動作をシミュレートします。 –

+0

それは簡単ではありませんでした。ありがとう。 – beluchin

関連する問題