Quelle est la différence dans le comportement des deux extraits de code ci-dessous pour publier un message?Spring Kafka Partitioning
Approche 1
Message<String> message = MessageBuilder.withPayload("testmsg")
.setHeader(KafkaHeaders.MESSAGE_KEY, "key").setHeader(KafkaHeaders.TOPIC, "test").build();
ListenableFuture<SendResult<String, String>> future = kafkaTemplate.send(message);
Approche 2
ListenableFuture<SendResult<String, String>> future = kafkaTemplate.send("test", "testmsg");
Sujet Config:
$ bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
Topic:test PartitionCount:3 ReplicationFactor:1 Configs:
Topic: test Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: test Partition: 1 Leader: 0 Replicas: 0 Isr: 0
Topic: test Partition: 2 Leader: 0 Replicas: 0 Isr: 0
Observation:
S'il y a 3 consommateurs, un par partition; L'approche 1 conduit à tous les messages consommés par un seul consommateur à partir d'une seule partition. Avec l'approche 2; la consommation est également répartie entre les 3 partitions/consommateurs.