Java 卡夫卡消费者没有';不能加入自定义组ID
我根据Spring Kafka文档设置了Kafka ConsumerFactory。 但是,似乎没有使用groupId。也许我也只是把整个事情搞错了,所以我想让你知道我的经历 这是我的配置,似乎不起作用:Java 卡夫卡消费者没有';不能加入自定义组ID,java,spring,apache-kafka,spring-kafka,Java,Spring,Apache Kafka,Spring Kafka,我根据Spring Kafka文档设置了Kafka ConsumerFactory。 但是,似乎没有使用groupId。也许我也只是把整个事情搞错了,所以我想让你知道我的经历 这是我的配置,似乎不起作用: @Bean ConsumerFactory<String, KafkaEvent> kafkaEventConsumerFactory() { return new DefaultKafkaConsumerFactory<>( getCo
@Bean
ConsumerFactory<String, KafkaEvent> kafkaEventConsumerFactory() {
return new DefaultKafkaConsumerFactory<>(
getConsumerProperties(),
new StringDeserializer(),
new JsonDeserializer<>(KafkaEvent.class));
}
Map<String, Object> getConsumerProperties() {
Map<String, Object> props = new HashMap<>();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); // TODO
props.put(ConsumerConfig.GROUP_ID_CONFIG, "myGroupId");
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, true);
props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, 3);
props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, 120000);
props.put(ConsumerConfig.HEARTBEAT_INTERVAL_MS_CONFIG, 45000);
props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, 70000);
return props;
}
我还可以看到我的groupId“myGroupId”包含在上面记录的错误日志中。然而,让我怀疑的是某个ConsumerCoordinator的调试日志,它总是声明加入不同的groupId,我有点担心这看起来是正确的
2017-09-04 15:28:13.904 ( ) INFO consumer.internals.AbstractCoordinator - Successfully joined group org.springframework.kafka.KafkaListenerEndpointContainer#0 with generation 40
2017-09-04 15:28:13.904 ( ) INFO consumer.internals.AbstractCoordinator - Successfully joined group org.springframework.kafka.KafkaListenerEndpointContainer#0 with generation 40
2017-09-04 15:28:13.906 ( ) INFO consumer.internals.ConsumerCoordinator - Setting newly assigned partitions [] for group org.springframework.kafka.KafkaListenerEndpointContainer#0
2017-09-04 15:28:13.907 ( ) INFO consumer.internals.ConsumerCoordinator - Setting newly assigned partitions [my-topic-0] for group org.springframework.kafka.KafkaListenerEndpointContainer#0
在Spring启动时,也会输出ConsumerConfig。我可以看出groupId是错误的,但是其他属性被正确地接管了
据我所知,我可以通过在ConsumerFactory上设置groupId,或者使用spring.kafka.consumer.group id在application.properties中设置groupId来全局设置groupId。但这两种变体都不起作用
只有当我使用@KafkaListener
注释配置groupId时,日志才会声明消费者加入了正确的组:
2017-09-04 15:38:30.787 ( ) DEBUG consumer.internals.AbstractCoordinator - Received successful JoinGroup response for group myGroupId: org.apache.kafka.common.requests.JoinGroupResponse@4c51c449
使用此配置:
@KafkaListener(topics = KafkaEventPublisher.ORDER_TOPIC, groupId = "myGroupId")
我们使用的是Spring Boot 2.0.0.M3(因此,Spring Kafka 2.0.0.M3)这是M3中的一个bug;(2.0.3.构建快照)(和1.3.0.M2)。我们希望在本周晚些时候发布2.0.0.RC1候选版本(等待Spring框架RC4)
@KafkaListener(topics = KafkaEventPublisher.ORDER_TOPIC, groupId = "myGroupId")