2016-09-14 2 views
2

Route 내에 여러 트랜잭션 범위를 생성해야합니다. 아래처럼.Apache Camel : Route 내의 여러 트랜잭션

<route> 
    <from uri="activemq:queue:foo"/> 
    <transacted ref="required"/> 
    <to uri="activemq:queue:bar"/> 
    <to uri="bean:database1?method=insert(*,*)"/> 
    <transacted ref="requiresNew"/> 
    <to uri="bean:database2?method=insert(*,*)"/> 
</route> 

위의 경로를 만들면 아래 오류가 발생합니다. java.lang.IllegalArgumentException가 : -

는 오류 2016년 9월 13일 14시 32분 32초 servlet.FrameworkServlet 컨텍스트 초기화 org.apache.camel.RuntimeCamelException 실패 출력은에 최고 수준으로 추가해야합니다 노선. Transacted [ref : requiresNew]를 경로 상단으로 이동해보세요. org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException (ObjectHelper.java:1642)에서

은 문서 및 포럼을 고개를 하나의 트랜잭션 범위가 경로 내에서 허용되는 것 같습니다. Route에서 트랜잭션을 제어 할 수있는 솔루션을 찾고 있으며 여러 트랜잭션 범위를 생성 할 수 있습니다.

현재 허용됩니까?

답변

2

경로 당 하나의 거래 정책 만 가질 수 있지만 다른 정책이 필요한 경로 부분을 다른 경로로 분리 할 수도 있습니다 (자세한 내용은 the official documentation 참조).

<route> 
    <from uri="activemq:queue:foo"/> 
    <transacted ref="required"/> 
    <to uri="activemq:queue:bar"/> 
    <to uri="bean:database1?method=insert(*,*)"/> 
    <to uri="direct:requiresNew"/> 
</route> 

<route> 
    <from uri="direct:requiresNew"/> 
    <transacted ref="requiresNew"/> 
    <to uri="bean:database2?method=insert(*,*)"/> 
</route>