当主题不存在时,我不想从我的消费者应用程序自动创建主题。
我知道这是一个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:添加使用者配置以禁用自动主题创建
有人能在这里帮忙吗?
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为我指明了正确的方向。