【问题标题】:Merge results of two http requests (spring integration)合并两个http请求的结果(spring集成)
【发布时间】:2015-11-09 21:12:38
【问题描述】:

我正在努力做到以下几点:

创建两个 http 请求(getData 和 getMetadata),然后将结果合并到这样的负载中:{res1: getDataResult, res2: getMetadataResult} 然后将其传递到“resultChannel”。

<int:header-enricher input-channel="request" output-channel="getData">
    <int:header name="prop" value="1"/>
</int:header-enricher>

<int-http:outbound-gateway
        request-channel="getData"
        url-expression="'https://x.y.z/{param1}'"
        http-method="GET"
        reply-channel="aggregate"
        expected-response-type="java.util.HashMap"
        request-factory="restFactory">
    <int-http:uri-variable name="param1" expression="payload.param1"/>
</int-http:outbound-gateway>

<int-http:outbound-gateway
        request-channel="getData"
        url-expression="'https://x.y.z/{param2}'"
        http-method="GET"
        reply-channel="aggregate"
        expected-response-type="java.util.HashMap"
        request-factory="restFactory">
    <int-http:uri-variable name="param2" expression="payload.param2"/>
</int-http:outbound-gateway>

<int:aggregator
        release-strategy-expression="size() == 2"
        input-channel="aggregate"
        output-channel="resultChannel"
        correlation-strategy-expression="headers['prop']"
        expire-groups-upon-completion="true">
</int:aggregator>
<!---->

<int:channel id="resultChannel" />

作为输入,我有一个有效负载,其中包含必须用于请求的 param1 和 param2。

【问题讨论】:

  • 帮助

标签: spring spring-integration


【解决方案1】:

使用aggregator

您将需要一个关联策略(将两个回复分组);发布策略可能就像release-strategy-expression="size() == 2"一样简单。

如果您在两个请求中都设置了标头,例如将foo 设置为某个值,请使用correlation-strategy-expression="headers['foo']"

聚合器会将两个回复配对并作为一个集合发布;然后,您可以使用&lt;transformer/&gt; 生成最终结果。

您可以重复使用相同的相关值,只要您设置expire-groups-upon-completion="true"。否则,相关性已释放的消息将被丢弃。

【讨论】:

  • 这有帮助,加里。我已经更新了这个问题。而且我有一个不同的问题 - 聚合器似乎在这种配置中不起作用。
  • “不起作用”并没有多大帮助。打开 DEBUG 日志记录并按照流中的消息进行操作。如果您仍然无法弄清楚,您需要显示更多配置。现在两个网关都从同一个通道消费,您将需要使用 pub-sub 通道,以便两者都能获取消息。 (但我看到你想通了)。
猜你喜欢
  • 1970-01-01
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多