45.9. 테일러 커서 소비자의 작동 방식


커서를 테일링 가능 커서로 전환하려면 먼저 커서를 생성할 때 몇 가지 특수 플래그가 MongoDB에 신호를 보낼 수 있습니다. 생성된 후 커서는 열린 상태로 유지되며 새 데이터가 도달할 때까지 MongoCursor.next() 메서드를 호출할 때 차단됩니다. 그러나 MongoDB 서버는 결정되지 않은 기간 후에 새 데이터가 표시되지 않는 경우 커서를 종료할 수 있는 권리를 보유합니다. 새 데이터를 계속 사용하고자 하는 경우 커서를 다시 생성해야 합니다. 그리고 그렇게하기 위해, 당신은 당신이 떠난 위치 또는 다른 곳에서 다시 소비하기 시작해야 할 것입니다.

Camel MongoDB 테일링 가능 커서 소비자는 이러한 모든 작업을 처리합니다. 증가하는 특성의 데이터에서 일부 필드에 키를 제공해야 합니다. 이 키는 다시 생성할 때마다 커서를 배치하기 위한 마커 역할을 합니다(예: 타임스탬프, 순차 ID 등). MongoDB에서 지원하는 모든 데이터 유형일 수 있습니다. 날짜, 문자열 및 정수는 제대로 작동하는 것으로 확인됩니다. 이 구성 요소의 컨텍스트에서 이 메커니즘을 "테일 추적"이라고 합니다.

소비자는 이 필드의 마지막 값을 기억하고 커서를 다시 생성할 때마다 increasingField > lastValue 와 같은 필터를 사용하여 쿼리를 실행하여 읽지 않은 데이터만 소비합니다.

필드 증가 설정: 엔드포인트 URI tail>-<ingIncreasingField 옵션에서 증가하는 필드의 키를 설정합니다. Camel 2.10에서 이 필드에 대한 중첩된 탐색은 아직 지원되지 않으므로 데이터의 최상위 필드여야 합니다. 즉, "timestamp" 필드는 훌륭하지만 "nested.timestamp"는 작동하지 않습니다. 중첩된 증가하는 필드에 대한 지원이 필요한 경우 Camel JIRA에서 티켓을 엽니 다.

커서 재개발 지연: 초기 조정 시 새 데이터를 사용할 수 없는 경우 MongoDB에서 커서를 즉시 강제 종료합니다. 이 경우 서버를 덮어쓸 필요가 없으므로 cursorRegenerationDelay 옵션이 도입되었습니다(기본값: 1000ms).

예를 들면 다음과 같습니다.

from("mongodb:myDb?database=flights&collection=cancellations&tailTrackIncreasingField=departureTime")
    .id("tailableCursorConsumer1")
    .autoStartup(false)
    .to("mock:test");

위의 경로는 "flights.cancellations" capped 컬렉션에서 "departureTime"을 증가하는 필드로 사용하며 기본 재생 커서가 1000ms입니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동