从 Spring Kafka Consumer 禁用自动主题创建

ABh*_*nav 2 java apache-kafka kafka-consumer-api spring-kafka

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

我知道这是一个 Kafka 服务器级别的配置,用于禁用自动主题创建 ( auto.create.topics.enable = false),但我无法在我的基础设施中进行此更改。

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

我尝试设置

spring:
  kafka:
    consumer:
      properties:
        allow.auto.create.topics: false
Run Code Online (Sandbox Code Playgroud)

但它不起作用!

似乎 Kafka 添加了此支持: https://cwiki.apache.org/confluence/display/KAFKA/KIP-361%3A+Add+Consumer+Configuration+to+Disable+Auto+Topic+Creation

有人可以帮忙吗?

ABh*_*nav 6

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

spring:
  kafka:
    consumer:
      properties:
        allow.auto.create.topics: false
Run Code Online (Sandbox Code Playgroud)

是一个简单的 Spring Kafka Consumer 的参考项目。

然而,就我而言,我还使用了Spring Kafka 以注释形式提供的非阻塞重试@RetryableTopic

在这种情况下,为了关闭 Consumer 的自动主题创建,以及上述属性更改,我们还需要在注释中设置一个名为autoCreateTopicsto的属性,如下所示:"false"@RetryableTopic

  @RetryableTopic(
    attempts = "4",
    backoff = @Backoff(delay = 1000),
    fixedDelayTopicStrategy = FixedDelayStrategy.SINGLE_TOPIC,
    autoCreateTopics = "false"
  )
Run Code Online (Sandbox Code Playgroud)

它的默认值为"true".

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

非常感谢佐洛夫我指明了正确的方向。