gpt4 book ai didi

java - 支撑 Camel body

转载 作者:行者123 更新时间:2023-12-02 11:06:44 24 4
gpt4 key购买 nike

我正在尝试在 Apache Camel 中实现以下路线:端点 1 接收消息。该路由向端点 2(清除正文)发起请求。 Transformer 使用端点 2 的结果来转换端点 1 传入消息的正文。

enter image description here

我尝试了以下操作:

from("direct:MessageEndpoint1")
.setHeader(Exchange.HTTP_METHOD, constant("GET"))
.to("http://localhost:9003/MessageEndpoint2")
.process(new MessageTransformationProcessor())
.to("direct:MessageEndpoint3");

问题是,该正文被消息端点 2 覆盖。我正在考虑将消息正文备份到属性中。但最佳实践是什么?

最佳答案

您应该在此处使用的企业集成模式是enricher

参见:http://camel.apache.org/content-enricher.html

正如您所正确识别的那样,当您将消息发送到消息端点 2 时,消息端点 1 的正文将会丢失。

相反,您应该尝试这种模式:

from("direct:MessageEndpoint1")
.setHeader(Exchange.HTTP_METHOD, constant("GET"))
.enrich("http://localhost:9003/MessageEndpoint2", new AggregationStrategy() {
@Override
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
// write an aggregation strategy that makes sense here...
}
})
.process(new MessageTransformationProcessor())
.to("direct:MessageEndpoint3");

通常,您可以在 newExchange 的响应中获取所需的信息,并将其设置为 oldExchage 上的属性

oldExchange.setProperty("xyz", newExchange.getIn().getBody().get(...));

关于java - 支撑 Camel body ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50903365/

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