307.6.4. transacted Batch Consumers & Producers


SJMS 구성 요소는 Producer 및 Consumer 끝점 모두에서 로컬 JMS 트랜잭션 배치를 지원하도록 설계되었습니다. 그러나 각각 어떻게 처리되는지는 매우 다릅니다.

SJMS 소비자 엔드포인트는 연결된 세션으로 커밋하기 전에 X 메시지를 처리하는 간단한 구현입니다. 소비자에서 배치된 트랜잭션을 사용하려면 먼저 transacted 매개 변수를 true로 설정한 다음 transactionBatchCount 를 추가하고 0보다 큰 값으로 설정하여 트랜잭션을 활성화합니다. 예를 들어 다음 구성은 10개의 메시지마다 세션을 커밋합니다.

sjms:queue:transacted.batch.consumer?transacted=true&transactionBatchCount=10
Copy to Clipboard Toggle word wrap

소비자 끝점에서 배치를 처리하는 동안 예외가 발생하면 세션 롤백이 호출되어 메시지가 다음 사용 가능한 소비자로 재전송됩니다. 또한 카운터는 연결된 세션의 BatchTransactionCommitStrategy 에 대해 0으로 설정됩니다. 사용자가 JMSRedelivered 헤더가 true로 설정된 메시지를 조사하기 위해 배치 메시지의 프로세서에 후크를 배치해야 합니다. 이는 메시지가 어느 시점에서 롤백되었으며 성공적인 처리 확인이 발생했음을 나타냅니다.

트랜잭션된 배치 소비자는 또한 세션에서 열려 있는 트랜잭션을 커밋하기 전에 메시지 간에 기본 시간(5000ms)을 대기하는 내부 타이머의 인스턴스를 전달합니다. 기본적으로 5000ms(최소 1000ms)는 대부분의 사용 사례에 적합하지만 추가 튜닝이 필요한 경우 transactionBatchTimeout 매개변수를 설정합니다.

sjms:queue:transacted.batch.consumer?transacted=true&transactionBatchCount=10&transactionBatchTimeout=2000
Copy to Clipboard Toggle word wrap

컨텍스트 전환의 양이 예기치 않은 성능이 저하될 수 있으므로 허용되는 최소 값은 1000ms입니다.

그러나 생산자 끝점은 훨씬 다르게 처리됩니다. 각 메시지가 대상에 전달된 후 생산자를 사용하면 Exchange가 종료되고 더 이상 해당 메시지에 대한 참조가 없습니다. 모든 메시지를 재전송에 사용할 수 있도록 하려면 BatchMessages를 게시하는 Producer Endpoint에서 트랜잭션을 활성화하기만 하면 됩니다. 트랜잭션은 배치 목록에 있는 모든 메시지를 포함하는 교환의 결론에 커밋됩니다. 추가 구성을 수행할 필요가 없습니다. 예를 들면 다음과 같습니다.

List<BatchMessage<String>> messages = new ArrayList<BatchMessage<String>>();
for (int i = 1; i <= messageCount; i++) {
    String body = "Hello World " + i;
    BatchMessage<String> message = new BatchMessage<String>(body, null);
    messages.add(message);
}
Copy to Clipboard Toggle word wrap

이제 트랜잭션이 활성화된 목록을 게시합니다.

template.sendBody("sjms:queue:batch.queue?transacted=true", messages);
Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat