web-dev-qa-db-fra.com

Comment envoyer un message à une partition particulière dans Kafka?

J'ai créé un sujet qui comporte de nombreuses partitions. En utilisant le producteur de console, je veux envoyer des messages à des partitions particulières et afficher le consommateur de la console. Sur le producteur de console, j'ai essayé cela,

kafka-console-producer.bat --broker-list localhost:9092 --topic sample  --property parse.key=true --property key.separator=,

Envoyer des messages en tant que,

key1,another-message

Mais je suis juste confus si key1 représente numéro de partition.

En utilisant le consommateur de la console, j'ai consulté les messages,

kafka-console-consumer.bat --zookeeper localhost:2181 --topic sample

Je souhaite afficher les messages en fonction des partitions. Est-ce la bonne façon d'afficher les messages sur le consommateur de la console? Quelqu'un peut-il s'il vous plaît fournir une compréhension claire à ce sujet?

8
Amr916

La clé n'est pas le numéro de partition mais Kafka utilise la clé pour spécifier la partition cible. La stratégie par défaut est de choisir une partition basée sur un hachage de la clé ou d'utiliser un algorithme à tour de rôle si le la clé est nulle.

Si vous avez besoin d'un algorithme personnalisé pour mapper les messages aux partitions, vous devez implémenter org.Apache.kafka.clients.producer.Partitioner interface. Le nom de votre classe doit être défini comme partitioner.class propriété du producteur.

Mise à jour: Vous pouvez également spécifier le numéro de partition directement dans ProducerRecord

8
Katya Gorshkova