130장. HawtDB (더 이상 사용되지 않음)
Camel 2.3부터 사용 가능
HawtDB 는 매우 가볍고 삽입 가능한 키 값 데이터베이스입니다. Camel과 함께 Aggregator와 같은 다양한 Camel 기능에 대한 지속적인 지원을 제공할 수 있습니다.
현재 제공하는 기능:
- HawtDBAggregationRepository
더 이상 사용되지 않음
HawtDB 프로젝트는 더 이상 사용되지 않으며 경량이고 임베딩 가능한 키 값 데이터베이스로 leveldb 로 교체되고 있습니다. leveldb를 사용하기 쉽도록 leveldbjni 프로젝트가 있습니다. Apache ActiveMQ 프로젝트는 kahadb를 대체하기 위해 leveldb를 향후 기본 파일 기반 메시지 저장소로 사용할 계획입니다.
이 대신 사용하는 camel-leveldb 구성 요소가 있습니다.
HawtDB 1.4 이상 문제
HawtDB 1.4 이상에는 버그가 있습니다. 즉, 파일 저장소에서 사용하지 않는 공간을 확보하지 않습니다. 즉, 파일이 계속 증가하고 있습니다. 이 문제는 Camel 2.5 이상에서 제공되는 HawtDB 1.5에서 해결되었습니다.
Maven 사용자는 이 구성 요소에 대해 pom.xml
에 다음 종속성을 추가해야 합니다.
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-hawtdb</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
현재 제공하는 기능:
- HawtDBAggregationRepository
130.1. HawtDBAggregationRepository 사용
HawtDBAggregationRepository
는 이동 중에 집계된 메시지를 유지하는 AggregationRepository
입니다. 이렇게 하면 기본 집계자가 메모리에만 AggregationRepository
이므로 메시지를 느슨하게 사용할 수 있습니다.
다음과 같은 옵션이 있습니다.
옵션 | 유형 | 설명 |
---|---|---|
| 문자열 |
필수 리포지토리 이름입니다. 공유 |
| 문자열 | 영구 스토리지의 파일 이름입니다. 시작 시 파일이 없는 경우 새 파일이 생성됩니다. |
| int | 파일 저장소에 매핑되는 메모리 세그먼트 버퍼의 크기입니다. 기본적으로 8mb입니다. 값은 바이트 단위입니다. |
| boolean |
|
| short | 메모리 페이지의 크기입니다. 기본적으로 512바이트입니다. 값은 바이트 단위입니다. |
| HawtDBFile |
기존 구성된 |
| boolean |
기존 Exchange가 있는 경우 가져오기 작업에서 이전 Exchange를 반환해야 하는지 여부입니다. 기본적으로 이 옵션은 집계 시 이전 교환이 필요하지 않으므로 최적화하려면 |
| boolean |
복구 가능 여부입니다. 이 옵션은 기본적으로 |
| long | 복구가 활성화되면 백그라운드 작업은 모든 x의 모든 시간을 실행하여 실패한 교환을 복구하고 다시 제출할 수 있는지 스캔합니다. 기본적으로 이 간격은 5000밀리 초입니다. |
| int |
복구된 교환에 대한 재전송 시도의 최대 수를 제한할 수 있습니다. 활성화된 경우 모든 재전송 시도가 실패한 경우 교환은 dead letter 채널로 이동합니다. 기본적으로 이 옵션은 비활성화되어 있습니다. 이 옵션을 사용하는 경우 |
| 문자열 |
복구된 교환이 소진된 데드페이스 채널의 끝점 URI가 이동됩니다. 이 옵션을 사용하는 경우 |
|
| Camel 2.12: 여러 Camel 애플리케이션이 동일한 HawtDB 기반 집계 리포지토리를 공유하는 클러스터된 환경에서 종종 필요한 최적화 잠금을 켜십시오. |
repositoryName
옵션을 제공해야 합니다. 그런 다음 persistentFileName
또는 hawtDBFile
을 제공해야 합니다.
130.1.1. 유지될 때 보존되는 내용
HawtDBAggregationRepository
는 직렬화 가능 호환 데이터
유형만 유지합니다. 데이터 유형이 이러한 유형이 아니면 해당 유형이 삭제되고 WARN
이 기록됩니다. 메시지 본문과
헤더만 유지됩니다. 메시지
교환
속성은 유지되지 않습니다.
130.1.2. 복구
HawtDBAggregationRepository
는 기본적으로 실패한 모든 교환을 복구합니다. 이 작업은 영구 저장소에서 실패한 Exchange를 검색하는 백그라운드 작업을 통해 수행됩니다. checkInterval
옵션을 사용하여 이 작업이 실행되는 빈도를 설정할 수 있습니다. 복구는 Camel이 실패한 교환을 복구하고 다시 전달하도록 하는 트랜잭션으로 작동합니다. 복구된 모든 Exchange는 영구 저장소에서 복원되고 다시 제출되고 다시 전송됩니다.
다음 헤더는 교환이 복구/배달될 때 설정됩니다.
헤더 | 유형 | 설명 |
---|---|---|
| 부울 | 교환이 재전송되고 있음을 나타내기 위해 true로 설정됩니다. |
| 정수 | 1부터 시작하여 재전송 시도입니다. |
교환이 성공적으로 처리된 경우에만 AggregationRepository
에서 확인
방법을 호출할 때 발생하는 완료로 표시됩니다. 즉, 동일한 교환이 다시 실패하면 성공할 때까지 다시 시도됩니다.
maximumRedeliveries
옵션을 사용하면 복구된 교환에 대한 최대 재전송 시도 횟수를 제한할 수 있습니다. 또한 Camel에서 maximumRedeliveries
에 도달했을 때 교환을 보낼 위치를 알 수 있도록 deadLetterUri
옵션을 설정해야 합니다.
camel-hawtdb 단위 테스트에서 몇 가지 예제를 볼 수 있습니다(예: 이 테스트 ).
130.1.2.1. Java DSL에서 HawtDBAggregationRepository 사용
이 예제에서는 집계된 메시지를 target/data/hawtdb.dat
파일에 유지하려고 합니다.
130.1.2.2. Spring XML에서 HawtDBAggregationRepository 사용
동일한 예이지만 대신 Spring XML을 사용합니다.
130.1.3. 종속 항목
camel 경로에서 HawtDB를 사용하려면 camel-hawtdb 에 대한 종속성을 추가해야 합니다.
maven을 사용하는 경우 pom.xml에 다음을 추가하여 최신 & 가장 큰 릴리스의 버전 번호를 대체합니다 (최신 버전의 다운로드 페이지 참조).
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-hawtdb</artifactId> <version>2.3.0</version> </dependency>
130.1.4. 예를 들면 다음과 같습니다.
- Camel 구성
- Component
- endpoint
- 시작하기
- 수집기
- components