2016-12-07 1 views

답변

1

현재 (Kafka 0.10.1), Kafka로 작성시 정확히 한 번 배송 할 방법이 없습니다. 어떤 해결 방법을 원한다하더라도 항상 간격이 있으며 메시지가 손실되거나 중복 될 수 있습니다.

그러나 Kafka는 중복 쓰기를 피할 수있는 idempotent producer (0.10.2 예정)을 추가 할 예정입니다. 0.10.2 릴리스의 목표 날짜는 beginning 2017입니다.

+0

Kafka 주제에서 DB로 데이터를 내보내고 존재 여부를 확인하는 것이 좋습니다. –

+0

소비자와 데이터를 다시 읽는 것만으로 그 존재를 확인할 수 있습니다. 그러나 이것은 매우 비싸고 느립니다. 그러나 지금은 좋은 성능을 제공하는 좋은 솔루션이 없습니다. 멱등 원 Producer를 기다려야합니다. 아시다시피, 중복 쓰기를 허용하고 다운 스트림 소비자를 그에 따라 설계하고 중복 된 것을 필터링하는 것이 좋습니다. –

0

당신이 있는지 여부를 확인하는 것은 불가능하다 새 메시지를 보낼 때마다 동일한 메시지가 전달되었습니다. 다시 말해서 성공 또는 실패를 알리는 콜백을 사용하여 KafkaProducer.send 메소드를 호출 할 수 있습니다.

+0

이 방법은 저장되지 않습니다. 성공의 경우에도 제작자의 실패가 성공적인 쓰기 직후에 발생하지만 콜백이 트리거되기 전에는 제작자에게 콜백이 없을 수 있습니다. 이것을 downvote 할 필요가있다. 새로운 대답을 추가 할 것입니다. –

0

이것은 카프카의 범위에서 벗어납니다. 무작위 액세스를 위해 적절한 색인을 제공하는 다른 저장소를 사용하여이를 수행해야합니다. 필요에 따라 캐시 (분산), 키 - 값 저장소 등이 될 수 있습니다.

다른 소비자가 중복 제거를 위해 다른 전략을 사용할 수 있으며 (일부 소비자는 단순히 중복을 허용 할 수 있음) 생산자가 아닌 소비자 측에서이를 수행하는 것이 좋습니다.

+0

질문은 외부 시스템이 아니라 카프카에 글을 쓰는 것에 관한 것입니다. –