gpt4 book ai didi

java - 如何将来自外部服务调用的响应与 Camel 中的原始消息合并

转载 作者:行者123 更新时间:2023-11-29 03:45:24 24 4
gpt4 key购买 nike

从逻辑的角度来看,这是我希望实现的路由行为:

Logical view of routing info

我希望能够将外部服务的响应与原始请求合并。

我已经能够使用多播、聚合器和模拟端点来实现这一点,但我想知道是否有更简洁的方法。我当前的实现如下所示:

        <multicast strategyRef="serviceAggregator" stopOnException="false">
<to uri="mock:foo" />
<to uri="http://0.0.0.0:9999/service/?throwExceptionOnFailure=false" />
</multicast>
<camel:to uri="log:uk.co.company.aggregated?showAll=true" />
<to uri="http://0.0.0.0:9999/anotherService/

我特别不喜欢的部分是使用模拟端点,但我也不认为这是表达上图的一种非常可读的方式。所以我想知道是否有更优雅的方法来做到这一点?

最佳答案

我建议阅读 EIP 模式,例如内容丰富器 http://camel.apache.org/content-enricher.html

您可以在其中将回复消息与请求消息合并。

Mind the Content Enricher 有两种模式- 充实- pollEnrich

确保从上面链接中的文档中注意到差异。

<route>
<from uri="...">
<enrich uri="http://0.0.0.0:9999/service/?throwExceptionOnFailure=false" strategyRef="serviceAggregator"/>
<to uri="log:uk.co.company.aggregated?showAll=true" />
<to uri="http://0.0.0.0:9999/anotherService/>
...
</route>

是的,你的图表显示了分离器,但示例代码使用的是多播 EIP。

关于java - 如何将来自外部服务调用的响应与 Camel 中的原始消息合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11156758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com