3
下面兩個代碼片段發佈消息的行爲有什麼不同?春季卡夫卡分區
方法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);
方法2
ListenableFuture<SendResult<String, String>> future = kafkaTemplate.send("test", "testmsg");
主題配置:
$ 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
觀察:
如果有3個消費者,每個分區一個;方法1導致單個消費者從單個分區消耗的所有消息。方法2;消費在三個分區/消費者之間平均分配。