2014-10-13 4 views
2

나는 현재 소비자 그룹을 사용하여 카프카에서 메시지를 읽습니다. 나는 그러나 내 소비자가 무너져서 다시 가져 오는 경우, 중단 된 곳에서 메시지를 소비하지 않는다는 것을 알게되었습니다. 설명서 here을 읽은 후에는이 기능을 직접 구현해야하는 것처럼 보입니다. autooffset.reet config가 있다는 것을 알고 있지만, 처음부터 모든 것을 소비하거나 현재 대기열에있는 마지막 메시지에서 소비 할 수있게하는 것 같습니다. 내 이해가 맞습니까? 내가 직접 구현해야할까요? 또는 나는 여기에서 무엇인가 놓치고있다. 그것은 모든 큐잉 시스템이 제공해야하는 매우 기본적인 기능처럼 보입니다.카프카 소비자가 중단 한 곳에서 계속하지 않음

내가 사용하는 버전은 스칼라 버전 2.10에서 0.8.1.1입니다.

답변

1

링크를 기반으로 SimpleConsumer를 사용하려고합니다. SimpleConsumer를 사용하면 직접 오프셋을 관리하는 것과 같은 낮은 수준의 세부 사항을 처리해야합니다. 더 어렵지만 데이터가 소비되는 방식을 더 많이 제어 할 수 있습니다. 당신이 원하는 모든 낮은 수준의 세부 사항에 대해 많은 걱정없이 데이터를 읽을 단지의 경우

, HighLevelConsumer를 살펴 : https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Group+Example

+0

감사를 링크 데니스 위해! 그게 정확히 내가 사용하고있는 것입니다. 이 시나리오를 고려할 경우 - 1. 소비자를 차단하십시오. 2. 대기열에 메시지를 더 추가하십시오. 3. 소비자를 다시 시작하십시오. 소비자는 2 단계에서 추가 한 메시지를 소비하지 않고 대신 새 메시지 만 기다립니다. –

+0

상위 사용자를 사용하는 경우 autocommit.enable = true이고 autocommit.interval.ms가 적당한 값으로 설정되어 있는지 또는 코드가 commitOffsets()를 명시 적으로 호출하는지 확인하십시오. 자동 커밋을 사용하고 사용자가 오프셋을 동물원에 성공적으로 저장하기 전에 종료하면 설명 된 상황 (즉, 처음부터 읽기가 시작됨)으로 들어갈 수 있습니다. –

+0

제안 해 주셔서 감사합니다! 나는 그것을 시도하고 결과를 업데이트 할 것이다. –

관련 문제