提问者:小点点

禁用从 Spring Kafka 消费者自动创建主题


当主题不存在时,我不想从我的消费者应用程序自动创建主题。

我知道这是一个Kafka服务端配置来禁用自动主题创建(auto. create.topics.able=false),但我无法在我的基础架构中进行更改。

因此,我正在寻找一种在我的消费者应用程序中禁用自动主题创建的方法(使用Spring Kafka)。

我试着设置

spring:
  kafka:
    consumer:
      properties:
        allow.auto.create.topics: false

但是它不起作用!

似乎 Kafka 添加了此支持: https://cwiki.apache.org/confluence/display/KAFKA/KIP-361:添加使用者配置以禁用自动主题创建

有人能在这里帮忙吗?


共1个答案

匿名用户

application.yml 中的以下配置非常适合基于 Spring 的 Apache Kafka 消费者:

spring:
  kafka:
    consumer:
      properties:
        allow.auto.create.topics: false

这里是一个简单的SpringKafka消费者的参考项目。

然而,在我的案例中,我也使用了Spring Kafka以@RetryableTopic注释的形式提供的非阻塞重试。

在这种情况下,为了关闭消费者的自动主题创建,除了上面提到的属性更改,我们还需要在@RetryableTopic注解中将名为autoCreateTopics的属性设置为"false",如下所示:

  @RetryableTopic(
    attempts = "4",
    backoff = @Backoff(delay = 1000),
    fixedDelayTopicStrategy = FixedDelayStrategy.SINGLE_TOPIC,
    autoCreateTopics = "false"
  )

它的默认值是"true"

这里有一个非阻塞重试的Spring Kafka Consumer的参考项目。

非常感谢tzolov为我指明了正确的方向。