323.11. JDBC 기반 집계 리포지토리 사용

Camel 2.6에서 사용 가능

참고

Camel 2.6에서 JdbcAggregationRepository 사용

Camel 2.6에서 JdbcAggregationRepository은 camel-jdbc-aggregator 구성 요소에서 제공됩니다. Camel 2.7 이후부터는 JdbcAggregationRepositorycamel-sql 구성 요소에 제공됩니다.

JdbcAggregationRepository 은 즉시 집계된 메시지를 유지하는 AggregationRepository 입니다. 이렇게 하면 기본 집계기에서 메모리에서만 AggregationRepository 을 사용하므로 메시지가 손실되지 않습니다. JdbcAggregationRepository 을 Camel과 함께 사용하면 Aggregator에 대한 지속적인 지원을 제공할 수 있습니다.

Exchange가 성공적으로 처리된 경우에만 확인 메서드가 AggregationRepository 에서 호출될 때 발생하는 complete로 표시됩니다. 즉, 동일한 Exchange가 다시 실패하는 경우 성공할 때까지 재시도됩니다.

옵션 maximumRedeliveries 를 사용하여 지정된 복구 Exchange에 대한 최대 재전송 시도 횟수를 제한할 수 있습니다. 또한 Camel이 maximumRedeliveries 가 발생할 때 Exchange를 보내야 하는 위치를 알 수 있도록 deadLetterUri 옵션을 설정해야 합니다.

camel-sql의 단위 테스트에서 몇 가지 예를 볼 수 있습니다(예: 이 테스트 ).

323.11.1. 데이터베이스

각 집계기를 사용하려면 집계 및 완료된 두 개의 테이블이 사용됩니다. 일반적으로 completed의 이름은 "_COMPLETED" 로 접미사인 집계 이름과 동일합니다. name은 RepositoryName 속성을 사용하여 Spring 빈에서 구성해야 합니다. 다음 예제 집계가 사용됩니다.

두 테이블의 테이블 구조 정의는 동일합니다.In both case a String value is used as key (id) whereas a Blob contains the exchange serialized in byte array.
그러나 한 가지 차이점이 기억되어야 합니다. id 필드에는 테이블에 따라 동일한 콘텐츠가 없습니다.
집계 테이블 ID에는 구성 요소에서 메시지를 집계하는 데 사용하는 상관관계가 있습니다. id 는 완료된 테이블에서 해당 Blob 필드에 저장된 교환의 id를 보유합니다.

다음은 테이블을 생성하는 데 사용되는 SQL 쿼리이며 "aggregation" 을 집계 저장소 이름으로 교체합니다.

CREATE TABLE aggregation ( id varchar(255) NOT NULL, exchange blob NOT
NULL, constraint aggregation_pk PRIMARY KEY (id) ); CREATE TABLE
aggregation_completed ( id varchar(255) NOT NULL, exchange blob NOT
NULL, constraint aggregation_completed_pk PRIMARY KEY (id) );