当主题不存在时,我不想从Consumer应用程序自动创建主题。
我知道禁用自动主题创建(auto.create.topics.enable = false
(是Kafka服务器级别的配置,但我不能在我的基础结构中进行更改。
因此,我正在寻找一种方法来禁用Consumer应用程序中的自动主题创建(使用Spring Kafka(。
我试着设置
spring:
kafka:
consumer:
properties:
allow.auto.create.topics: false
但它不起作用!
似乎卡夫卡添加了这种支持:https://cwiki.apache.org/confluence/display/KAFKA/KIP-361%3A+添加+消费者+配置+到+禁用+自动+主题+创建
有人能帮忙吗?
application.yml
中的以下配置非常适合基于Spring for Apache Kafka:的消费者
spring:
kafka:
consumer:
properties:
allow.auto.create.topics: false
这里是一个简单的Spring Kafka Consumer的参考项目。
然而,在我的案例中,我也使用了Spring Kafka以@RetryableTopic
注释的形式提供的非阻塞重试。
在这种情况下,为了关闭Consumer的自动主题创建,以及上述属性更改,我们还需要在@RetryableTopic
注释中设置一个名为autoCreateTopics
到"false"
的属性,如下所示:
@RetryableTopic(
attempts = "4",
backoff = @Backoff(delay = 1000),
fixedDelayTopicStrategy = FixedDelayStrategy.SINGLE_TOPIC,
autoCreateTopics = "false"
)
默认值为"true"
。
这里有一个针对Spring Kafka Consumer的无阻塞重试的参考项目。
非常感谢托洛夫为我指明了正确的方向。