![](/img/trans.png)
[英]How to handle UnknownHostException when using @KafkaListener
[英]Programmatically setting properties when using @KafkaListener
我在 Spring Boot 应用程序中使用了@KafkaListener
注释,而没有创建自定义的KafkaListenerContainerFactory
bean。 我目前正在我的 application.yml 文件中设置spring.kafka.consumer.value-deserializer
属性来分配我的解串器,并且更喜欢以编程方式执行此操作以进行编译时检查。 我意识到创建我自己的KafkaListenerContainerFactory
允许我在工厂上设置这个属性,但我想避免样板和一些关于获取 SSL 设置的额外复杂性。
有没有一种简单的方法可以在不创建我自己的KafkaListenerContainerFactory
情况下以编程方式设置我的值反序列化器?
反序列化器使用用于创建消费者工厂的属性,而不是容器工厂,您可以按如下方式覆盖引导的消费者工厂:
@Bean
public ConsumerFactory<?, ?> kafkaConsumerFactory(KafkaProperties properties) {
Map<String, Object> props = properties.buildConsumerProperties();
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, MyDeserializer.class);
return new DefaultKafkaConsumerFactory<>(props);
}
根据文档
您可以设置其他属性,如下所示:
@KafkaListener(topics = "test-transactional",
properties={"foo:bar","isolation.level:read_committed"})
public void listen(ConsumerRecord<?, ?> cr) throws Exception {
logger.info("got consumer record" + cr.toString());
}
@KafkaListener(topics = "test-transactional",
properties={"isolation.level:read_uncommitted"})
public void listenDifferent(ConsumerRecord<?, ?> cr) throws Exception {
logger.info("uncomitted: got consumer record" + cr.toString());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.