spring-cloud-stream 请求-回复消息模式

Posted

技术标签:

【中文标题】spring-cloud-stream 请求-回复消息模式【英文标题】:spring-cloud-stream request-reply messaging pattern 【发布时间】:2016-06-20 10:24:22 【问题描述】:

是否有一种应与 spring-cloud-stream 一起使用的请求-回复模式?我可以在 spring-cloud-stream 上找到的所有文档都面向 MessageChannel.send 即发即弃类型的生产者,我对 spring-integration 中的 @MessagingGateway 很熟悉,但我不确定那会如何使用 spring-cloud-stream。当您有一个 REST POST 端点保存具有分配标识符的实体并且您需要将分配的标识符返回给调用者但您仍想使用消息传递时,这将很有用。

【问题讨论】:

【参考方案1】:

Spring Cloud Stream 中目前没有任何请求/回复的概念。

将其视为 unix 管道 foo | bar | baz 的类比,其中每个“应用程序”或微服务都接受一些输入并将其转发到管道中的下一个元素。

考虑一个独立的 spring-boot 应用程序,该应用程序将 spring-integration 用于请求/回复场景。当然,那个应用可以使用 s-c-s 来完成它的工作。

【讨论】:

“当然,那个应用程序可以使用 s-c-s 来完成它的工作。” - 你能详细说明一下吗? 我的意思是,在客户端,您可以编写一个 Spring Cloud Stream 应用程序,将输出通道绑定到请求目的地,并将输入通道绑定到回复目的地。在服务器端,你会做相反的事情。但是,客户端必须进行自己的请求/回复关联,因此在客户端使用出站网关在内部处理关联可能会更容易。 “出站网关” - 来自 Spring Integration 或 Spring Cloud Stream?要求一个使用 Cloud Stream 的请求/回复场景的简单示例是不是太过分了? 来自 Spring Integration - 正如我在回答中所说,spring-cloud-stream 真的是用于组装管道。 它们是不同的,来自the Spring Cloud Data Flow project page "Spring Cloud Data Flow 是一个用于构建数据集成和实时数据处理管道的工具包。管道由 Spring Boot 应用程序组成,使用 Spring Cloud Stream 或Spring Cloud Task 微服务框架。这使得 Spring Cloud Data Flow 适用于一系列数据处理用例,从导入/导出到事件流和预测分析。”。因此数据流用于将 Spring Cloud Stream 应用程序连接在一起。以后再问一个新问题。

以上是关于spring-cloud-stream 请求-回复消息模式的主要内容,如果未能解决你的问题,请参考以下文章

使用 spring-boot:1.5.1 和 spring-cloud-stream 时无法启动 bean 'inputBindingLifecycle'

spring-cloud-stream 整合 rabbitmq

spring-cloud-stream 与测试中的 spring-boot-data-mongodb 冲突

QNetworkAccessManager连接到2个回复槽,我怎么知道哪个回复属于哪个请求

Java EE 容器中的同步请求-回复模式

AADSTS50011:请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配:'**********-*****-*****-**** *****'