59.12. 트랜잭션 지원
Camel 2.19에서 사용 가능
Camel CDI는 JTA를 사용하여 Camel 트랜잭션 클라이언트를 지원합니다.
이 지원은 선택 사항이므로 Maven을 사용할 때 종속성으로 JTA를 명시적으로 추가하여 애플리케이션 클래스 경로에 JTA를 포함해야 합니다.
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>javax.transaction-api</artifactId>
<scope>runtime</scope>
</dependency>JTA 지원 컨테이너에 애플리케이션을 배포하거나 독립 실행형 JTA 구현을 제공해야 합니다.
경고
트랜잭션 관리자는 Java :/TransactionManager 키를 사용하여 JNDI 리소스로 조회됩니다.
광범위한 배포 시나리오를 지원하기 위해 더 유연한 전략이 향후 추가됩니다.
59.12.1. 트랜잭션 정책
Camel CDI는 일반적으로 지원되는 Camel TransactedPolicy 를 CDI 빈으로 구현할 수 있습니다. 이러한 정책은 트랜잭션된 EIP를 사용하여 이름으로 검색할 수 있습니다. 예를 들면 다음과 같습니다.
class MyRouteBean extends RouteBuilder {
@Override
public void configure() {
from("activemq:queue:foo")
.transacted("PROPAGATION_REQUIRED")
.bean("transformer")
.to("jpa:my.application.entity.Bar")
.log("${body.id} inserted");
}
}다음과 같습니다.
class MyRouteBean extends RouteBuilder {
@Inject
@Named("PROPAGATION_REQUIRED")
Policy required;
@Override
public void configure() {
from("activemq:queue:foo")
.policy(required)
.bean("transformer")
.to("jpa:my.application.entity.Bar")
.log("${body.id} inserted");
}
}지원되는 트랜잭션 정책 이름 목록은 다음과 같습니다.
-
PROPAGATION_NEVER, -
PROPAGATION_NOT_SUPPORTED, -
PROPAGATION_SUPPORTS, -
PROPAGATION_REQUIRED, -
PROPAGATION_REQUIRES_NEW, -
PROPAGATION_NESTED, -
PROPAGATION_MANDATORY.