【发布时间】:2021-02-10 06:20:18
【问题描述】:
我有一个代码使用 KafkaTemplate 将消息发送到不同的 Kafka 主题。主题名是从API接收的,无法提前知道,代码如下:
var message = MessageBuilder.fromMessage(message)
.setHeader(KafkaHeaders.TOPIC, targetTopic)
.build();
kafkaTemplate.send(message);
现在我想重构使用 Spring Cloud Stream 的现有方法,但它需要在 application.properties 中定义我不知道的主题名称。
spring.cloud.stream.bindings.output.binder=kafka
spring.cloud.stream.bindings.output.destination=user-events
我用来通过活页夹方法发送消息的代码如下所示:
// enable bindning in config class
@EnableBinding(KafkaBinding.class)
// interfaces with output() method
@Output("output")
MessageChannel output();
// sending message to topic from application.properties
kafkaBinding.output().send(message)
如何在运行时使用带有活页夹的方法设置主题名称?
【问题讨论】:
标签: java spring-kafka spring-cloud-stream spring-cloud-stream-binder-kafka