130장. HawtDB(더 이상 사용되지 않음)
Camel 2.3 사용
HawtDB 는 매우 가볍고 임베드 가능한 키 값 데이터베이스입니다. Camel과 함께 Aggregator와 같은 다양한 Camel 기능에 대한 지속적인 지원을 제공할 수 있습니다.
제공하는 현재 기능:
- HawtDBAggregationRepository
deprecated
HawtDB 프로젝트는 더 이상 사용되지 않으며, 구성 가능한 경량 키 값 데이터베이스로 leveldb 로 교체되고 있습니다. leveldb를 사용하기 쉽게 하려면 leveldbjni 프로젝트가 있습니다. Apache ActiveMQ 프로젝트는 향후 기본 파일 기반 메시지 저장소로 leveldb를 사용하여 kahadb를 교체할 계획입니다.
이 대신 사용할 것을 권장 하는 camel-leveldb 구성 요소가 있습니다.
HawtDB 1.4 이상
HawtDB 1.4 또는 그 이전 버전에서는 filestore가 사용되지 않는 공간을 확보하지 않음을 의미합니다. 즉, 파일이 계속 증가합니다. 이 문제는 Camel 2.5 이상과 함께 제공되는 HawtDB 1.5에서 해결되었습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml
에 추가해야 합니다.
제공하는 현재 기능:
- HawtDBAggregationRepository
130.1. Using HawtDBAggregationRepository 링크 복사링크가 클립보드에 복사되었습니다!
HawtDBAggregationRepository
은 즉시 집계된 메시지를 유지하는 AggregationRepository
입니다. 이렇게 하면 기본 집계기에서 메모리에서만 AggregationRepository
을 사용하므로 메시지가 느슨하지 않습니다.
여기에는 다음과 같은 옵션이 있습니다.
옵션 | 유형 | 설명 |
---|---|---|
| 문자열 |
필수 리포지토리 이름입니다. 공유 |
| 문자열 | 영구 스토리지의 파일 이름입니다. 시작 시 파일이 없는 경우 새 파일이 생성됩니다. |
| int | 파일 저장소에 매핑되는 메모리 세그먼트 버퍼의 크기입니다. 기본값은 8mb입니다. 값은 바이트 단위입니다. |
| boolean |
|
| short | 메모리 페이지 크기. 기본적으로 512바이트입니다. 값은 바이트 단위입니다. |
| HawtDBFile |
기존 구성된 |
| boolean |
get 작업에서 기존 Exchange가 존재하는 경우 반환되어야 하는지 여부입니다. 기본적으로 이 옵션은 집계 시 이전 교환이 필요하지 않으므로 최적화하려면 |
| boolean |
복구 활성화 여부입니다. 이 옵션은 기본적으로 |
| long | 복구가 활성화되면 xth 때마다 백그라운드 작업이 실행되어 복구 및 다시 제출하기 위해 실패한 Exchange를 스캔합니다. 기본적으로 이 간격은 5000밀리코어입니다. |
| int |
복구된 교환에 대한 최대 재전송 시도 횟수를 제한할 수 있습니다. 이 기능을 활성화하면 모든 재전송 시도가 실패한 경우 Exchange가 dead letter 채널로 이동됩니다. 기본적으로 이 옵션은 비활성화되어 있습니다. 이 옵션을 사용하는 경우 |
| 문자열 |
복구된 Exchange가 이동되는 Dead Letter 채널의 끝점 URI입니다. 이 옵션을 사용하는 경우 |
|
| Camel 2.12: 최적 잠금을 켜려면 여러 Camel 애플리케이션이 동일한 HawtDB 기반 집계 리포지토리를 공유하는 클러스터된 환경에서 종종 필요합니다. |
repositoryName
옵션을 제공해야 합니다. 그런 다음 persistentFileName
또는 hawtDBFile
을 제공해야 합니다.
130.1.1. 유지할 때 보존되는 항목 링크 복사링크가 클립보드에 복사되었습니다!
HawtDBAggregationRepository
은 Serializable
호환 가능한 데이터 유형만 유지합니다. 데이터 유형이 그렇게 되지 않은 경우 해당 유형이 삭제되고 WARN
이 기록됩니다. 메시지 본문과
헤더만 유지됩니다. 메시지
Exchange
속성은 유지되지 않습니다.
130.1.2. 복구 링크 복사링크가 클립보드에 복사되었습니다!
HawtDBAggregationRepository
은 기본적으로 실패한 Exchange를 복구합니다. 이는 영구 저장소에서 실패한 Exchange를 검사하는 백그라운드 작업을 통해 이 작업을 수행합니다. checkInterval
옵션을 사용하여 이 작업이 실행되는 빈도를 설정할 수 있습니다. 이 복구 작업은 Camel이 실패한 Exchange를 복구하고 재전송할 수 있도록 하는 트랜잭션으로 작동합니다. 복구된 모든 교환은 영구 저장소에서 복원되고 다시 제출되고 다시 전송됩니다.
다음 헤더는 Exchange가 복구/배송될 때 설정됩니다.
header | 유형 | 설명 |
---|---|---|
| 부울 | 교환이 재전송됨을 나타내기 위해 true로 설정됩니다. |
| 정수 | 재전송 시도는 1부터 시작합니다. |
Exchange가 성공적으로 처리된 경우에만 확인
메서드가 AggregationRepository
에서 호출될 때 발생하는 complete로 표시됩니다. 즉, 동일한 Exchange가 다시 실패하면 성공할 때까지 계속 재시도됩니다.
옵션 maximumRedeliveries
를 사용하여 지정된 복구 Exchange에 대한 최대 재전송 시도 횟수를 제한할 수 있습니다. 또한 Camel이 maximumRedeliveries
가 발생할 때 Exchange를 보내야 하는 위치를 알 수 있도록 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>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-hawtdb</artifactId>
<version>2.3.0</version>
</dependency>
130.1.4. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- 집계기
- components