306장. 간단한 JMS 배치 구성 요소


Camel 버전 2.16에서 사용 가능

SJMS Batch는 JMS 대기열에서 고성능 트랜잭션 일괄 처리를 위한 특수 구성 요소입니다. 이는 소비자 전용 구성 요소 및 집계기의 하이브리드로 간주할 수 있습니다.

Camel의 일반적인 사용 사례는 큐의 메시지를 사용하고 집계된 상태를 다른 엔드포인트로 보내기 전에 집계한 메시지를 집계하는 것입니다. 처리를 수행하는 시스템이 실패하면 데이터가 손실되지 않도록 하기 위해 일반적으로 대기열의 트랜잭션 내에서 사용되며 JDBC 구성 요소에 있는 것과 같은 영구 집계Repository 에 저장됩니다.

수집기 패턴의 동작은 들어오는 메시지가 집계되기 전에 AggregationRepository 에서 데이터를 가져와서 나중에 결과를 다시 작성하는 것입니다. 기본적으로 집계된 아티팩트 수가 증가함에 따라 읽기 및 쓰기가 점진적으로 더 오래 걸립니다. 이 문제의 영향을 보여주는 임의의 시간 단위를 사용하는 대략적인 예는 다음과 같습니다.

항목읽기 시간쓰기 시간총 시간

0

0

1

1

1

1

2

4

2

2

3

9

3

3

4

16

4

4

5

25

5

5

6

36

6

6

7

49

7

7

8

64

8

8

9

81

9

9

10

100

반면 SJMS Batch 구성 요소를 사용한 소비 성능은 선형입니다. 각 메시지는 다음 메시지를 가져오기 전에 AggregationStrategy 를 사용하여 사용하고 집계합니다. 단일 JMS 트랜잭션에서 모든 사용 및 집계가 수행되므로 중간 상태를 유지하기 위해 외부 스토리지가 필요하지 않습니다. 이는 위에서 설명한 읽기 및 쓰기 비용을 방지합니다. 실제로 이로 인해 처리량이 많은 여러 주문이 발생합니다.

첫 번째 메시지 이후의 크기 또는 마침표로 완료 조건이 충족되면 집계 교환이 경로로 전달됩니다. 이 Exchange 를 처리하는 동안 예외가 발생하거나 시스템이 종료되면 모든 원래 소비된 메시지는 큐에 다시 끝납니다(또는 브로커 구성에 따라 dead-letter queue에 배치됨).

일반 집계기를 사용하는 것과 달리 집계 조건에 대한 기능이 없으므로 여러 메시지 그룹에 배치를 사용할 수 없습니다. 사용되는 모든 메시지는 단일 일괄 처리로 집계됩니다.

하나의 경로를 사용하여 병렬로 사용할 수 있는 여러 JMS 소비자 지원을 사용할 수 있으며, 동시에 JMS 메시지 그룹과 같은 기능을 사용하여 관련 메시지를 그룹화할 수 있습니다.

Maven 사용자는 이 구성 요소에 대해 pom.xml 에 다음 종속성을 추가해야 합니다.

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-sjms</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

306.1. URI 형식

sjms:[queue:]destinationName[?options]

여기서 destinationName 은 JMS 대기열입니다. 기본적으로 destinationName 은 큐 이름으로 해석됩니다.

sjms:FOO.BAR

원하는 경우 선택적 queue: 접두사를 포함할 수 있습니다.

sjms:queue:FOO.BAR

해당 컨텍스트 내에서 배치 사용을 사용하는 이점이 없으므로 주제 사용은 지원되지 않습니다. 주제 메시지는 일반적으로 비영구적이며 손실은 허용됩니다. 실패한 트랜잭션 내에서 소비된 경우 브로커에 의해 주제 메시지가 다시 전달되지 않을 수 있습니다. 이 시나리오에서는 일반 SJMS 소비자 끝점을 일반 비독점 백업 수집기와 함께 사용할 수 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.