gpt4 book ai didi

java - 将默认容器工厂 bean 从 kafkaListenerContainerFactory 更改为我的自定义容器工厂

转载 作者:行者123 更新时间:2023-12-01 14:02:39 30 4
gpt4 key购买 nike

在 spring-kafka 文档中,我们可以看到默认容器工厂假定可用,bean 名称为 kafkaListenerContainerFactory除非通过配置提供了明确的默认值。

我想问一下是否可以更改配置以使用我的自定义容器工厂 bean(例如。 customKafkaListenerContainerFactory )而不是 kafkaListenerContainerFactory ?

代码示例 -> 如果我们输入

@KafkaListener(id = "cat", topics = "myTopic")
public void listen(String data, Acknowledgment ack) {
...
ack.acknowledge();
}

那么默认的 containerFactory bean 是 customKafkaListenerContainerFactory不是 kafkaListenerContainerFactory
更准确地说 -> 如果我不提供任何 containerFactory 属性,那么 customKafkaListenerContainerFactory不使用 kafkaListenerContainerFactory

最佳答案

是的,您可以使用 containerFactory @KafkaListener 中的属性注解,可以设置自定义kafka容器工厂bean

The bean name of the KafkaListenerContainerFactory to use to create the message listener container responsible to serve this endpoint.


@KafkaListener(id = "cat", topics = "myTopic", containerFactory="customKafkaListenerContainerFactory")
public void listen(String data, Acknowledgment ack) {
...
ack.acknowledge();
}

或者您可以覆盖默认值 kafkaListenerContainerFactory在配置类中。正如@Gary Russell 所说,只需使用相同的 bean 名称,它将替换 Boot's,这是以存在具有该名称的 bean 为条件的
@Configuration
@EnableKafka
public class Config {

@Bean
@ConditionalOnMissingBean(name = "kafkaListenerContainerFactory")
ConcurrentKafkaListenerContainerFactory<Integer, String>
kafkaListenerContainerFactory(ConcurrentKafkaListenerContainerFactoryConfigurer configurer) {
ConcurrentKafkaListenerContainerFactory<Integer, String> factory =
new ConcurrentKafkaListenerContainerFactory<>();
configurer.configure(factory,consumerFactory());
// set custom properties
return factory;
}

@Bean
public ConsumerFactory<Integer, String> consumerFactory() {
return new DefaultKafkaConsumerFactory<>(consumerConfigs());
}

@Bean
public Map<String, Object> consumerConfigs() {
Map<String, Object> props = new HashMap<>();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, embeddedKafka.getBrokersAsString());
...
return props;
}
}

关于java - 将默认容器工厂 bean 从 kafkaListenerContainerFactory 更改为我的自定义容器工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59955687/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com