60.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 리소스로 조회됩니다.

광범위한 배포 시나리오를 지원하기 위해 향후 더 유연한 전략이 추가될 예정입니다.

60.12.1. 트랜잭션 정책

Camel CDI는 일반적으로 지원되는 Camel Cryostated Policy 를 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.

60.12.2. 트랜잭션 오류 처리기

Camel CDI는 재전송 오류 처리기를 확장하는 트랜잭션 오류 처리기를 제공하여 예외가 발생할 때마다 롤백을 강제 수행하고 각 재전송에 대해 새 트랜잭션을 생성합니다.

Camel CDI는 구성에 빠르게 액세스할 수 있도록 transactionErrorHandler 도우미 메서드를 노출하는 CdiRouteBuilder 클래스를 제공합니다. 예를 들면 다음과 같습니다.

class MyRouteBean extends CdiRouteBuilder {

    @Override
    public void configure() {
        errorHandler(transactionErrorHandler()
            .setTransactionPolicy("PROPAGATION_SUPPORTS")
            .maximumRedeliveries(5)
            .maximumRedeliveryDelay(5000)
            .collisionAvoidancePercent(10)
            .backOffMultiplier(1.5));
    }
}
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.