213.8. LevelDB
Camel 2.10에서 사용 가능
LevelDB 는 매우 가볍고 삽입 가능한 키 값 데이터베이스입니다. Camel과 함께 Aggregator와 같은 다양한 Camel 기능에 대한 지속적인 지원을 제공할 수 있습니다.
현재 제공하는 기능:
- LevelDBAggregationRepository
213.8.1. LevelDBAggregationRepository 사용 링크 복사링크가 클립보드에 복사되었습니다!
LevelDBAggregationRepository
는 이동 중에 집계된 메시지를 유지하는 집계된Repository
입니다. 이렇게 하면 기본 집계자가 메모리에만 AggregationRepository
이므로 메시지를 느슨하게 사용할 수 있습니다.
다음과 같은 옵션이 있습니다.
옵션 | 유형 | 설명 |
---|---|---|
| 문자열 |
필수 리포지토리 이름입니다. 여러 리포지토리에 공유 |
| 문자열 | 영구 스토리지의 파일 이름입니다. 시작 시 파일이 없는 경우 새 파일이 생성됩니다. |
| LevelDBFile |
기존 구성된 |
| boolean | Camel 2.12: LevelDBFile이 쓰기 시 동기화되어야 하는지 여부를 나타냅니다. 기본값은 false입니다. 쓰기 시 동기화를 통해 모든 쓰기가 디스크에 스풀링될 때까지 항상 대기하므로 업데이트가 느슨하지 않습니다. 동기화 및 동기화 쓰기에 대한 자세한 내용은 LevelDB 문서를 참조하십시오. |
| boolean |
기존 Exchange가 있는 경우 가져오기 작업에서 이전 Exchange를 반환해야 하는지 여부입니다. 기본적으로 이 옵션은 집계 시 이전 교환이 필요하지 않으므로 최적화하려면 |
| boolean |
복구 가능 여부입니다. 이 옵션은 기본적으로 |
| long | 복구가 활성화되면 백그라운드 작업은 모든 x의 모든 시간을 실행하여 실패한 교환을 복구하고 다시 제출할 수 있는지 스캔합니다. 기본적으로 이 간격은 5000밀리 초입니다. |
| int |
복구된 교환에 대한 재전송 시도의 최대 수를 제한할 수 있습니다. 활성화된 경우 모든 재전송 시도가 실패한 경우 교환은 dead letter 채널로 이동합니다. 기본적으로 이 옵션은 비활성화되어 있습니다. 이 옵션을 사용하는 경우 |
| 문자열 |
복구된 교환이 소진된 데드페이스 채널의 끝점 URI가 이동됩니다. 이 옵션을 사용하는 경우 |
repositoryName
옵션을 제공해야 합니다. 그런 다음 persistentFileName
또는 levelDBFile
을 제공해야 합니다.
213.8.2. 유지될 때 보존되는 내용 링크 복사링크가 클립보드에 복사되었습니다!
LevelDBAggregationRepository
는 직렬화 가능 호환 메시지
본문 데이터 유형만 유지합니다. 메시지 헤더는 기본 / 문자열 / 숫자 / 기타여야 합니다. 데이터 유형이 이러한 유형이 아니면 해당 유형이 삭제되고 WARN
이 기록됩니다. 메시지 본문과
헤더만 유지됩니다. 메시지
교환
속성은 유지되지 않습니다.
213.8.3. 복구 링크 복사링크가 클립보드에 복사되었습니다!
LevelDBAggregationRepository
는 기본적으로 실패한 모든 교환을 복구합니다. 이 작업은 영구 저장소에서 실패한 Exchange를 검색하는 백그라운드 작업을 통해 수행됩니다. checkInterval
옵션을 사용하여 이 작업이 실행되는 빈도를 설정할 수 있습니다. 복구는 Camel이 실패한 교환을 복구하고 다시 전달하도록 하는 트랜잭션으로 작동합니다. 복구된 모든 Exchange는 영구 저장소에서 복원되고 다시 제출되고 다시 전송됩니다.
다음 헤더는 교환이 복구/배달될 때 설정됩니다.
헤더 | 유형 | 설명 |
---|---|---|
| 부울 | 교환이 재전송되고 있음을 나타내기 위해 true로 설정됩니다. |
| 정수 | 1부터 시작하여 재전송 시도입니다. |
교환이 성공적으로 처리된 경우에만 AggregationRepository
에서 확인
방법을 호출할 때 발생하는 완료로 표시됩니다. 즉, 동일한 교환이 다시 실패하면 성공할 때까지 다시 시도됩니다.
maximumRedeliveries
옵션을 사용하면 복구된 교환에 대한 최대 재전송 시도 횟수를 제한할 수 있습니다. 또한 Camel에서 maximumRedeliveries
에 도달했을 때 교환을 보낼 위치를 알 수 있도록 deadLetterUri
옵션을 설정해야 합니다.
camel-leveldb의 단위 테스트에서 몇 가지 예제를 볼 수 있습니다(예: 이 테스트 ).
213.8.3.1. Java DSL에서 LevelDBAggregationRepository 사용 링크 복사링크가 클립보드에 복사되었습니다!
이 예제에서는 집계된 메시지를 target/data/leveldb.dat
파일에 유지하려고 합니다.
213.8.3.2. Spring XML에서 LevelDBAggregationRepository 사용 링크 복사링크가 클립보드에 복사되었습니다!
동일한 예이지만 대신 Spring XML을 사용합니다.
213.8.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
카멜 경로에서 LevelDB를 사용하려면 camel-leveldb 에 대한 종속성을 추가해야 합니다.
maven을 사용하는 경우 pom.xml에 다음을 추가하여 최신 & 가장 큰 릴리스의 버전 번호를 대체합니다 (최신 버전의 다운로드 페이지 참조).
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-leveldb</artifactId> <version>2.10.0</version> </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-leveldb</artifactId>
<version>2.10.0</version>
</dependency>
213.8.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- endpoint
- 시작하기
- 수집기
- HawtDB
- components