繁体   English   中英

将消息发送到运行时定义的 Kafka 主题

[英]Send message into runtime defined Kafka Topic

我有一个使用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)

如何使用带有活页夹的方法在运行时设置主题名称?

@EnableBinding已被弃用,取而代之的是更新的、首选的功能样式。

您可以使用StreamBridge发送到动态目的地。

https://docs.spring.io/spring-cloud-stream/docs/3.1.1/reference/html/spring-cloud-stream.html#_streambridge_and_dynamic_destinations

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM