目前我正在使用 Spring boot 2.4.0 和 spring-kafka。
我想使用消费者和生产者,但不想使用 kafka admin。
我尝试KafkaAdmin
通过将“bootstrap.servers”设置为 null 来覆盖类,但不起作用。它仍然“尝试”连接以进行 KafkaAdmin 并记录错误。这不是致命的,但是有什么方法可以完全禁用kafka admin吗?
你的担心没有道理。本身KafkaAdmin
不连接。那里的逻辑是这样的:
public final boolean initialize() {
Collection<NewTopic> newTopics = this.applicationContext.getBeansOfType(NewTopic.class, false, false).values();
if (newTopics.size() > 0) {
AdminClient adminClient = null;
try {
Map<String, Object> configs2 = new HashMap<>(this.configs);
checkBootstrap(configs2);
adminClient = AdminClient.create(configs2);
}
catch (Exception e) {
if (!this.initializingContext || this.fatalIfBrokerNotAvailable) {
throw new IllegalStateException("Could not create admin", e);
}
else {
LOGGER.error(e, "Could not create admin");
}
}
Run Code Online (Sandbox Code Playgroud)
NewTopic
因此,如果应用程序上下文中没有任何bean,则KafkaAdmin
不会执行任何操作。如果您有一些,那么如果不在生产/消费之前在代理上创建新主题,那么原因是什么。因此KafkaAdmin
逻辑。
归档时间: |
|
查看次数: |
2709 次 |
最近记录: |