无法禁用主题自动创建在 Spring Kafka v 1.1.6

wixjitnu  于 2023-02-15  发布在  Apache
关注(0)|答案(1)|浏览(102)

我正在使用springboot v1.5和spring Kafka v1.1.6向Kafka经纪人发布消息。
当代理向主题发布消息时,如果不存在,则默认在代理中创建主题。
我不希望它创建主题,如果不存在。我试图通过添加属性spring.kafka.topic.properties.auto.create=false禁用它,但它不起作用。
下面是我的bean配置

@Value("${kpi.kafka.bootstrap-servers}")
private String bootstrapServer;

@Bean
public ProducerFactory<String, CmsMonitoringMetrics> producerFactoryJson() {
    Map<String, Object> configProps = new HashMap<>();
    configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServer);
    configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class);
    configProps.put("allow.auto.create.topics", "false");
    return new DefaultKafkaProducerFactory<>(configProps);
}

@Bean
public KafkaTemplate<String, CmsMonitoringMetrics> kafkaTemplateJson() {
    return new KafkaTemplate<>(producerFactoryJson());
}

在生产者方法im使用下面的代码来发布

Message<CmsMonitoringMetrics> message = MessageBuilder.withPayload(data)
                    .setHeader(KafkaHeaders.TOPIC, topicName)
                    .build();
            SendResult<String, CmsMonitoringMetrics> result = kafkaTemplate.send(message).get();

它仍然创建主题.请帮我禁用它.

o7jaxewo

o7jaxewo1#

根据文档,auto.create.topics.enable是一个代理配置,这意味着您必须在Kafka的服务器端设置此属性,而不是在生产者/消费者客户端。

相关问题