【发布时间】:2015-06-02 13:37:43
【问题描述】:
我最近一直在研究 Spring Integration 和 AMQP (RabbitMQ),因为我需要使用异步方法与两个应用程序(中间件和后端)通信,以便中间件在接收客户端调用时不会阻塞。
我首先采用了更简单的同步实现方法,这意味着我在中间件上有一个网关接口和一个出站网关(requiresReply=true),然后在后端有一个入站网关和一个服务激活器.这种初始方法效果很好(我使用了 Spring Integration XML 配置)。
现在我需要说明以异步方式进行这项工作的方法。
通过查看 RabbitMQ 教程 6,最好使用回调队列和相关 ID,根据我的理解,这类似于调用 Spring RabbitTemplate 的 convertAndSend() 然后 receive(),而不是 convertSendAndReceive( )(在收到响应之前会一直阻塞)。
我查看了 Spring Integration 文档,我需要替换中间件上的网关接口以使其返回 Future 或 ListenableFuture。
完成后,我还查看了outbound gateway 的文档,其中说它可以与 RabbitTemplate 一起管理correlationID 和replyTo 消息属性。
我的问题是:
- 为了使这项工作使用异步方法,我是否应该继续使用出站/入站网关,而不是出站/入站消息转换器?
- 如果遵循出站/入站消息转换器方法(在我看来这类似于 RabbitMQ 教程所示),我如何将网关接口上的 Future 与从入站通道适配器返回的结果相关联?
【问题讨论】:
-
我忘了提到我已经检查了这个another entry,它指向了 RabbitTemplate 文档。
标签: asynchronous spring-integration spring-amqp