【发布时间】:2018-01-15 07:18:52
【问题描述】:
下面两个代码sn-ps发布消息的行为有什么不同?
方法 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;消费在 3 个分区/消费者之间平均分配。
【问题讨论】:
标签: apache-kafka kafka-consumer-api kafka-producer-api spring-kafka