【问题标题】:Send message into runtime defined Kafka Topic将消息发送到运行时定义的 Kafka 主题
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      • 2019-02-25
      • 2016-01-17
      • 2023-03-16
      • 2017-09-22
      • 1970-01-01
      • 2019-10-13
      相关资源
      最近更新 更多