【问题标题】:PollableChannel in Spring Cloud StreamSpring Cloud Stream 中的 PollableChannel
【发布时间】:2017-06-11 07:01:34
【问题描述】:

如何在 Spring Cloud Stream 中使用 PollableChannel 来接收来自输入的流? 谢谢

【问题讨论】:

  • 请详细说明您为什么需要它?
  • 在不创建新方法的情况下从通道接收流并添加StreamListenner注解,stackoverflow.com/questions/41821377/…
  • 大概是和your other question有关。注释会为您完成大量的管道工作。您需要更好地解释您的用例,但在您的启动应用程序中直接使用对 Spring AMQP(用于 rabbit)或 Spring Kafka(用于 Apache Kafka)的 Spring Integration 支持可能会更好。
  • 在您看来什么是流?有一个@BridgeFrom/@BridgeTo 供您参考。请分享一些代码以了解您的位置
  • 我的意思是微服务发送的数据,因为我知道要在 Spring 云流中接收数据,您需要创建一个带有流侦听器注释的方法,在我的情况下,我需要在方法中接收这些数据没有任何注释。

标签: spring-integration spring-cloud spring-cloud-netflix spring-cloud-stream


【解决方案1】:

你甚至不需要@StreamListener 注释来接收来自Binder 的数据。只需为您的微服务提供 @EnableBinding(Processor.class) 并注入如下 bean:

@Autowired
@Qualifier(Processor.INPUT)
private MessageChannel inputChannel;

并手动订阅它。

或者您可以使用任何 Spring Integration 方法订阅 MessageChannel,例如:

@Bean
IntegrationFlow myProcess() {
   return IntegrationFlows.from(Processor.INPUT)
          ...
          .get();

}

@StreamListener 与绑定完全不同。

【讨论】:

  • 我做了第一个服务,但问题是订阅没有返回我需要返回给客户端的接收数据,它返回无效
  • 好吧,您可以使用ReplyAddress 模式在请求消息头中指定一些通道、目的地或其他任何内容,然后等待来自ReplyAddress 的回复。如果一切都在内存中,您可以使用@MessagingGateway,它会为您隐藏该模式。
猜你喜欢
  • 2021-04-20
  • 1970-01-01
  • 2017-03-26
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
  • 2017-10-16
  • 2020-10-24
  • 1970-01-01
相关资源
最近更新 更多