Springs集成的回复关联过程详细信息

时间:2012-07-28 06:15:33

标签: java spring-integration

我找不到使用网关和服务激活器进行回复处理的文档。

如果我有网关: 1)向ReqChannel频道发送请求 2)接受频道RepChannel上的回复

ReqChannel连接到路由器,它将传入的消息路由到某些服务激活器之一,比如说AServiceActivator和BServiceActivator,并且服务激活器有一个配置的输出通道=“RepChannel”。

如果我在网关的接口上异步或同时从不同的线程执行多个方法调用,那么网关如何将传入的回复与实际的服务调用者相关联?

1 个答案:

答案 0 :(得分:7)

网关创建临时回复通道并将其放入邮件的标头中。此机制提供必要的关联,因为每条消息都有自己的回复通道。

如果最终消费者(比如服务激活者)没有输出通道,框架会自动将回复发送到replyChannel标头。

出于这个原因,通常没有必要在网关上声明回复频道以供最终消费者发送。

但是,有时这很有用 - 例如,如果您想要点击回复频道,或将其设为发布 - 订阅频道,那么结果会转到多个位置。

在这种情况下(当网关上有回复通道,最终消费者在那里发送消息时),框架只是将显式声明的回复通道桥接到消息头中的临时回复通道。

因此,在流程中保留replyChannel标头至关重要。除非您包含原始邮件的replyChannel标头,否则您无法向回复频道发送任意回复。