问题描述
我们正在使用SubscribableChannel
,MessageChannel
和PollableMessageSource
,并使用@EnableBinding
和@StreamListner
进行配置。现在我们需要迁移到功能方法。 SubscribableChannel
和MessageChannel
可以使用Consumer和supplier bean进行转换,但是我们无法迁移PollableMessageSource
。
由于如果使用@EnableBinding
会禁用功能,因此我们无法进行迁移。我们尝试研究@PollableBean
,但似乎它仅适用于具有有限流的Reactive supplier。有什么办法吗?
参考:https://cloud.spring.io/spring-cloud-stream/reference/html/spring-cloud-stream.html
解决方法
您可以将一个函数和一个PollableMessageSource
包装在一个bean中,并使用@EnableBinding
绑定到它,而不是绑定到该函数。有关示例,请参见https://github.com/spring-cloud/stream-applications/blob/master/applications/sink/tasklauncher-sink/src/main/java/org/springframework/cloud/stream/app/tasklauncher/sink/TaskLauncherSinkConfiguration.java。