使用spring-integration合并消息

时间:2015-04-02 01:45:34

标签: spring-integration

来自频道。

<!-- messages missing a vital piece of information -->
<int:channel id="inChannel" />

我有一个激活器来阅读消息。

<!-- read the message and prepare an http request for the extra information -->
<int:service-activator 
    input-channel="inChannel"
    output-channel="additionalInformationOutChannel"
    ref="additionalInformationEndpointImpl"
    method="prepare" > 
</int:service-activator>

现在原始消息缺少重要的信息。获得它的唯一方法是通过http从外部系统请求它。

<!-- login -->
<int-http:outbound-gateway
      url="http://...login?username=...&password=..."
      http-method="..." />

<!-- get information -->
<int-http:outbound-gateway
      url="http://...extraInfomration"
      http-method="GET"
      expected-response-type="java.lang.String"
      request-channel="additionalInformationOutChannel"  />

<!-- logout -->
<int-http:outbound-gateway
      url="http://...logout?username=..."
      http-method="..." />

我需要一些方法将上述http响应与原始消息结合起来,以便我可以使用其他信息更新原始消息。

实际上这个过程如下

  1. 阅读inChannel
  2. 的讯息
  3. 通过http
  4. 登录外部系统
  5. 通过http
  6. 从外部系统请求信息作为json有效负载
  7. 通过http
  8. 注销外部系统
  9. 使用json有效负载中的一些信息从inChannel更新原始消息。
  10. 如何创建将所有内容链接在一起的流程?

1 个答案:

答案 0 :(得分:0)

使用content (payload) enricher。 http请求将在request-channel流上执行,结果可用于丰富原始消息的有效负载和/或报头。例如,如果原始有效负载具有setter setAdditionalInformation,则richher可以根据http交互的结果中的数据设置该属性。