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.