java - 如何禁用自动启动的 KAFKA 消费者,而无需进行任何代码更改,包括在 Spring Boot 中设置 autoStartup = "{xyz}"?
问题描述
下面是我的 KAFKA 消费者
@Service
public class Consumer {
private static final Logger LOGGER = Logger.getLogger(Consumer.class.getName());
public static Queue<ProductKafka> consumeQueue = new LinkedList<>();
@KafkaListener(topics = "#{'${spring.kafka.topics}'.split('\\\\ ')}", groupId = "#{'${spring.kafka.groupId}'}")
public void consume(ProductKafka productKafka) throws IOException {
consumeQueue.add(productKafka);
LOGGER.info(String.format("#### -> Logger Consumed message -> %s", productKafka.toString()));
System.out.printf("#### -> Consumed message -> %s", productKafka.toString());
}
}
下面是我的“application.properties”文件
spring.kafka.topics=Product
spring.kafka.groupId=Product-Group
我的 KAFKA 消费者正在自动启动。
但是,由于要求,我想禁用自动启动的 KAFKA 消费者,而不必对现有代码进行任何更改,包括在消费者类中设置autoStartup = "{xyz}" 。
我正在寻找一个现有的属性,它会禁用 KAFKA 消费者被自动启动,像这样
spring.kafka.consumer.enable=false
注意:我有多个 KAFKA 消费者,上述属性应该禁用项目中的所有消费者。
我们是否有任何现有属性可以禁用自动启动 KAFKA 消费者而无需对现有代码进行任何更改?
解决方案
没有标准的开箱即用属性;你必须提供你自己的。
autoStartup="${should.start:true}"
should.start
如果属性不存在,将启动容器。
编辑
只需在您的应用程序中添加类似的内容。
@Component
class Customizer {
Customizer(AbstractKafkaListenerContainerFactory<?, ?, ?> factory,
@Value("${start.containers:true}") boolean start) {
factory.setAutoStartup(start);
}
}
start:
containers: false
推荐阅读
- java - CriteriaBuilder 和/或条件未应用必需/正确的括号
- scala - 在 Either 中指定案例对象的类型
- php - 在 PHP 中创建带有数据(字符串类型)的列表
- javascript - 如何将文本放在表格中 TD 的下一行
- python-3.x - 我需要在 python 中对这个操作进行矢量化
- hadoop - Apache Accumulo 安装
- linux - 如何使用 linux 服务器上的 systemctl 服务启动我的 prolog Web 服务?
- javascript - 返回具有给定键的新对象,并且其值被翻转
- python-3.x - 问题:从范围 (1,1000) 中找到数字的数字的迭代平方和为 1 的数字
- javascript - 在顶层将 Redux 连接到我的应用程序不起作用