我正在使用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();
它仍然创建主题.请帮我禁用它.
1条答案
按热度按时间o7jaxewo1#
根据文档,
auto.create.topics.enable
是一个代理配置,这意味着您必须在Kafka的服务器端设置此属性,而不是在生产者/消费者客户端。