2017-11-16 10 views
0

카프카 주제뿐만 아니라 데이터베이스에서 오프셋을 관리하고 싶으므로 특정 지점 이후에 큐에서 재 처리 할 수 ​​있도록 할 수 있습니다. 어떻게해야합니까? 미리 감사드립니다.Kafka 오프셋 Kafka 주제 및 로컬 데이터베이스에 대한 오프셋 관리

+0

예를 자세히 설명해 주시겠습니까 ?? – shakeel

+0

왜 이미 주제에 저장되어 있다면 데이터베이스에 저장해야합니까? 다음 번에 같은 groupId에서 소비자를 시작하면 Kafka는 해당 소비자에게 폴링을 시작할 오프셋을 적절하게 할당합니다. –

답변

0

PartitionInfo을 입력하면 해당 파티션의 오프셋에 대해 소비자에게 seekToBeginning 또는 seek으로 알릴 수 있습니다.

ConsumerRecord은 주제, 파티션 및 오프셋을 알고 있습니다. 이러한 사실을 데이터베이스에 기록 할 수 있습니다.

하지만 여기서는 주제가 분할 된 경우를 포착합니다. 그런 다음 해당 카테고리에 대한 데이터가 시간순으로 표시됩니다. 따라서 두 개의 파티션과 본질적으로 성으로 파티션을 만들면 알파벳의 첫 번째 절반에 대한 이름 변경이 순차적 일 것이고 두 번째 절반은 순차적 일 것입니다.하지만 이름 변경에 대한 단일 시계열보기를 얻는 방법은 분명하지 않습니다 시스템 전체에서.

그러나 데이터베이스의 특정 변경 사항에 대한 파티션 및 오프셋을 기록한 경우 해당 파티션을 찾아 해당 지점의 스트림을 오프셋 및 다시 처리 할 수 ​​있습니다.

(당신은 하나 개의 파티션 만있는 경우에는 무관하게,하지만 당신의 주제 나 스트리밍 아키텍처는 여러 개의 파티션이 /가 필요한 경우 경우에 대해 생각하는 뭔가) 이론에 실제 질문에서 돌아 스테핑

을, 나는 아니에요 소비자 그룹이 Kafka 자체에 대한 커밋 된 오프셋을 기록하므로 스트림 처리 응용 프로그램이 중단되면 걱정없이 중단 한 부분부터 픽업 할 수 있습니다. 이 메시지는 enable.auto.commit property을 설정하면 자동으로 발생하거나 사용자가 commitSync()으로 전화하면 수동으로 제어 할 수 있습니다. 또는 변경 불가능한 데이터 저장소 (Kafka)를 변경 가능한 저장소로 사용하려고 시도하지만 이는 원하는 작업을 수행하려는 이유를 설명 할 수없는 사실에 기반한 순수한 추측입니다. 할 것.

관련 문제