OpenShift Kafka实例未默认创建主题,Camel路由生产消息时如何自动创建
解决OpenShift Kafka中Camel生产消息时自动创建主题的问题
要让Camel在发送消息时自动创建不存在的Kafka主题,只需在Kafka端点的URL参数中添加生产者相关配置项:
- 添加
allowAutoCreateTopics=true:开启自动创建主题的核心开关 - 可选配置
numPartitions和replicationFactor:指定新主题的分区数和副本数(需匹配OpenShift Kafka集群的允许值,比如Strimzi部署的集群默认副本数为3)
修改后的Camel Route代码如下:
@Component public class kafkaConfig extends RouteBuilder { @Override public void configure() throws Exception { from("timer:time") .to("kafka:aayush?brokers=test-hydra-cf--gejc-inbggu-ef-a.cloud.com:443&saslMechanism=PLAIN&securityProtocol=SASL_SSL&saslJaasConfig=org.apache.kafka.common.security.plain.PlainLoginModule required username=\"...\" password=\"...\"&allowAutoCreateTopics=true&numPartitions=1&replicationFactor=3"); } }
额外排查点
如果修改后仍然报错,需检查OpenShift上的Kafka集群全局配置:
- 对于Strimzi部署的Kafka集群,查看
Kafka自定义资源中的spec.kafka.config.auto.create.topics.enable字段,确保其值为true(若为false则需修改该配置并重启集群)
内容的提问来源于stack exchange,提问作者Aayush Saini
相关产品推荐
相关产品推荐

