2012-05-08 5 views
1

commit-transaction 태그의 exception-pattern 속성이 작동합니까?commit-transaction에서 예외 패턴이 작동합니까?

<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"/> 

구성의 관련 조각이다 : 즉, 나는이 작업을 얻을 수있는 기본 예외 전략,

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

하지만 이것이다 exception-pattern="*"을 사용하면 JMS 메시지가 다시 전달되지 않습니다. 그러나보다 구체적인 exception-pattern을 사용하면 메시지가 다시 배달됩니다. throw 된 예외가 BusinessException 인 경우 메시지를 다시 전달하지 않습니다.

이 뮬 CE에서 3.2.1

감사합니다!

+0

뮬 버전? 오류가 발생 했습니까? –

+0

@David : 지금 메시지의 자세한 내용. – beluchin

+0

사이드 노트 : ActiveMQ 커넥터에서'specification = "1.1"'을 원한다. –

답변

1

핵심 문제는 다음과 같습니다. 구성 요소에 의해 throw 된 모든 예외는 org.mule.component.ComponentException으로 묶입니다.

default-exception-strategy이 예외는 근본 원인에이 예외를 래핑하지 못했습니다. 즉 org.mule.component.ComponentExceptionexception-pattern이 적용됩니다.

IMO 이것은 Mule의 버그입니다. MULE-6218을 열었습니다. 그것을 위해 투표 해주세요.

한편, Mule 예외를 처리하기 전에 언랩하는 사용자 정의 예외 전략을 만들 수 있습니다. 이를 위해 다음을 사용하십시오 : ExceptionHelper.getRootException(ex)

+0

예외가 특정 유형 인 경우 맞춤 예외 전략에서 예외를 '삼켜 버리는'방법을 보여줄 수 있습니까? – beluchin

+0

Extend AbstractExceptionStrategy를 제어하고 isRollback()을 재정 의하여이 동작을 시뮬레이트합니다. –

+0

더 간단 할 수 없습니다. 감사. – beluchin

관련 문제