如何使用 Spring Cloud Kafka Stream 3.1 创建生产者

问题描述

我知道如何使用命令式编程方法定义生产者,但我找不到如何使用函数式编程方法定义生产者。

我阅读了关于这个的 Spring Cloud Stream Binder 文档,但只找到了如何定义消费者,或消费者和生产者(例如,从主题获取信息,转换数据并发送到另一个主题)。

所以,我不知道是否可以继续使用 @Input@Ouptut 之类的注释来定义单个处理器,此时我很困惑,因为库指示这些注释已弃用,但我找不到定义简单生产者以将信息发送到特定主题的示例或文档。

谢谢!

文档链接https://docs.spring.io/spring-cloud-stream-binder-kafka/docs/3.0.10.RELEASE/reference/html/spring-cloud-stream-binder-kafka.html#_kafka_streams_binder

解决方法

您可以定义一个 Supplier<?> @Bean,它将按间隔轮询以生成输出(如 @InboundChannelAdapter 通道的 @Output

https://docs.spring.io/spring-cloud-stream/docs/3.1.0/reference/html/spring-cloud-stream.html#spring_cloud_function

或者,您可以使用 StreamBridge 将任意消息发送到输出目标。

https://docs.spring.io/spring-cloud-stream/docs/3.1.0/reference/html/spring-cloud-stream.html#_sending_arbitrary_data_to_an_output_e_g_foreign_event_driven_sources