2016-07-06 15 views
10

https://www.safaribooksonline.com/library/view/kafka-the-definitive/9781491936153/ch04.html belgesi, belgesine sahiptir "Otomatik yanıtlama etkinken, yoklama çağrısının her zaman önceki yoklama tarafından döndürülen son ofseti işleyeceğini unutmayın. hangi olayların gerçekten işlendiğini bilmediğinden, anketi tekrar aramadan önce (ya da close() işlevini çağırmadan önce, anket tarafından döndürülen tüm olayları her zaman işlemek çok önemlidir. "." Eğer durum buysa, auto.commit.interval.ms, önceki anketten() alınan mesajları işlemek için gereken süreden daha büyükse nasıl çalışır. = TrueKafka auto commit ve auto.commit.interval.ms ile ilgili açıklama gerekir.

auto.commit.interval.ms = 10

Ve telefonla anket

enable.auto.commit:

Aşağıdaki nerede, bu daha somut hale senaryoyu düşünün için() bir döngüde. İlk çağrı üzerine

1) yoklamak için(), ben 1000 mesajları (2000-3000 ofset) almak ve tekrar her biri 1000 mesajları ) Ben anket (call) işlemek için 1 ms alır. Bu 2. ankette() çağrısında, önceki anketten() geri dönen en son ofset 3000 yapılmalı, ancak auto.commit.interval.ms 10 ms olarak ayarlandığından, ofset henüz yapılmayacaktır, değil mi?

Bu senaryoda, işlenen ofset, aslında işlenen en son sapmanın biraz daha gerisinde kalacak mı?

Birisi açıklığa kavuşabilir/onaylayabilir mi?

cevap

9

Davranışı doğru olarak tanımlarsınız. Ancak, sonuç doğru değil. Taahhüt edilen mahsup daha fazla ve daha fazla gecikmeyecektir. Otomatik taahhüt aralığı geçtikten sonra, yapılacak sonraki çağrı tüm işlenmiş iletilerini işleyecek.

Diyelim ki, her 10 ms'de bir yoklama çağrısı yapın ve işlem aralığını 100 ms olarak ayarlayın. Böylelikle, her 10. çağrıya çağrı yapılacak (ve bu taahhüt, son 10 anket çağrısından gelen tüm mesajları kapsayacaktır).

+0

Haklısınız. Sonunda 2 ofset (işlenmiş ve en son işlenmiş) senkronize edildi ama o zamana kadar offset geride kalmaya devam edecek. – Deeps

+0

İki taahhüt arasında evet. Bu Kafka'nın işlemesi gereken işlem sayısını azaltmak için amaçlanmıştır. Kafka'nın en az bir kez teslimat garantisi sağladığını hatırlayın. Böylece, taahhüt sayısı ile başarısızlık durumunda ne kadar verinin yeniden işlenmesi gerektiğidir. –

+0

Anket çağrısı 100 ms sonraysa ve otomatik yanıtlama aralığını 10 ms'ye ayarlarsa ne olur? –

İlgili konular