Czy klucz jest wymagany w ramach wysyłania wiadomości w Kafce

KeyedMessage<String, byte[]> keyedMessage = new KeyedMessage<String, byte[]>(request.getRequestTopicName(),SerializationUtils.serialize(message)); producer.send(keyedMessage);

Obecnie wysyłam wiadomość bez żadnego klucza utrzymywanego jako część wiadomości z kluczem, czy nadal będzie działać z delete.retention.ms , Czy muszę wysłać klucz jako część wiadomości? Czy dobrze jest zrobić klucz jako część wiadomości

Author: Rahul, 2015-04-08

1 answers

Klucze są najczęściej przydatne / niezbędne, jeśli potrzebujesz silnego porządku dla klucza i rozwijasz coś w rodzaju maszyny stanowej. Jeśli chcesz, aby wiadomości z tym samym kluczem (na przykład unikalny identyfikator) były zawsze wyświetlane w odpowiedniej kolejności, dołączenie klucza do wiadomości zapewni, że wiadomości z tym samym kluczem zawsze trafią do tej samej partycji w temacie. Kafka gwarantuje porządek wewnątrz partycji, ale nie między partycjami w temacie, więc alternatywnie nie podaje klucza - co spowoduje rozkład round-robin na partycje - nie zachowa takiego porządku.

W przypadku maszyny stanowej klucze mogą być używane z logiem .czyściciel.enable to deduplicate entries with the same key. W takim przypadku Kafka zakłada, że aplikacja dba tylko o najnowszą instancję danego klucza, a program do czyszczenia dziennika usuwa starsze duplikaty danego klucza tylko wtedy, gdy klucz nie jest null. Ta forma zagęszczania logów jest kontrolowana przez log.czyściciel.usunąćretencja właściwości i wymaga kluczy.

Alternatywnie, bardziej powszechna Właściwość log.retencja.hours , który jest domyślnie włączony, działa poprzez usunięcie nieaktualnych segmentów dziennika. W takim przypadku klucze nie muszą być dostarczane. Kafka po prostu usunie fragmenty dziennika, które są starsze niż podany okres przechowywania.

To wszystko, jeśli włączyłeś zagęszczanie logów lub wymagasz ścisłego porządku dla wiadomości z tym samym kluczem, powinieneś zdecydowanie używam kluczy. W przeciwnym razie klucze null mogą zapewnić lepszą dystrybucję i zapobiegać potencjalnym problemom z hot spotting w przypadkach, gdy niektóre klucze mogą pojawiać się częściej niż inne.

 76
Author: kuujo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-08 13:14:04