2013-07-31 3 views

답변

1

나는 그들이

kafka.api.OffsetRequest.EarliestTime()가있는 데이터의 시작을 발견 있습니다 .. 읽기 offset로부터 선택할 수있는 다음과 같은 방법을 도입했습니다 지금까지 0.8에서 발견 무엇 kafka.api.OffsetRequest.LatestTime()은 새로운 메시지 만 스트리밍합니다.

예제 코드 아직 https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+SimpleConsumer+Example

1

카프카 정말이 작업을 수행 할 수 있도록 구성되지 않은 승인 부분에 대해 확실하지. 이유를 이해하려면 디자인 설명서 here을 검토하십시오.

정확히 한 번 확인을 제공하려면 응용 프로그램에 대한 외부 추적 시스템을 만들어야합니다. 여기서는 승인을 명시 적으로 작성하고 트랜잭션 ID를 통해 잠금을 구현하여 상황이 한 번만 처리되도록합니다. 시스템 등의 구현의 계산 비용이 매우 높고, 대규모 트랜잭션 시스템은 비교적 이국적인 하드웨어를 필요로하며 카프카 등의 시스템보다 틀림없이 낮은 확장 성을 가지고 주요 이유 중 하나입니다. 당신은 강한 내구성의 의미를 필요로하지 않는 경우

, 당신은 마지막 메시지를 읽을 때의 거친 추적 할 그룹의 API를 사용할 수 있습니다. 이렇게하면 모든 메시지를 적어도 한 번 읽습니다. 참고 그룹의 API는 당신에게 명시 적으로 응용 프로그램이 실제 처리 보장이 시나리오에서 매우 약한 것을, 로직을 처리하는 자신의 추적 할 수있는 기능을 제공하지 않기 때문에. 멱등 원 (idempotent) 처리에 의존하는 체계는이 환경에서 일반적입니다.

또는, 당신은 (그것을 사용하는 꽤 복잡합니다)이 가난이라는 SimpleConsumer API를 사용할 수있는 당신이 명시 적으로 응용 프로그램 내에서 타임 스탬프를 추적 할 수 있습니다. 이것은 응용 프로그램 큐에서 읽은 데이터의 자신의 처리를 추적 할 수 있기 때문에 기본 카프카 API를 통해 달성 될 수 처리 보장의 가장 높은 수준이다.

관련 문제