作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Apache Camel 中实现以下路线:端点 1 接收消息。该路由向端点 2(清除正文)发起请求。 Transformer 使用端点 2 的结果来转换端点 1 传入消息的正文。
我尝试了以下操作:
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/
我正在尝试在 Apache Camel 中实现以下路线:端点 1 接收消息。该路由向端点 2(清除正文)发起请求。 Transformer 使用端点 2 的结果来转换端点 1 传入消息的正文。 我尝试
我只需要对我的 Spring Web 应用程序的一个我不太理解的部分进行简短的解释。 我有一个带有 StudentController 的简单 mvc spring Web 应用程序。对于数据,我有一
我是一名优秀的程序员,十分优秀!