Activemq Camel-content enricher:enrich()与pollEnrich()的比较
第一个问题: 我无法真正理解Activemq Camel-content enricher:enrich()与pollEnrich()的比较,activemq,apache-camel,Activemq,Apache Camel,第一个问题: 我无法真正理解rich()和pollrich()之间的区别。也许骆驼使用的术语不是很好 我在这里读到: 使用丰富DSL元素丰富内容 Camel在DSL中提供了两种内容丰富器 充实 鳕鱼 enrich使用生产者获取附加数据。通常是 用于请求-应答消息传递,例如调用外部 网络服务。另一方面,PollRich使用轮询消费者 获取附加数据。它通常用于事件消息 消息传递,例如读取文件或下载FTP文件 我不明白有什么区别。他们似乎都是通过消费来获得额外的数据(Web服务响应、FTP文件)。
rich()
和pollrich()
之间的区别。也许骆驼使用的术语不是很好
我在这里读到:
使用丰富DSL元素丰富内容
Camel在DSL中提供了两种内容丰富器
- 充实
- 鳕鱼
public class ExampleAggregationStrategy implements AggregationStrategy {
public Exchange aggregate(Exchange original, Exchange resource) {
Object originalBody = original.getIn().getBody();
Object resourceResponse = resource.getIn().getBody();
Object mergeResult = ... // combine original body and resource response
if (original.getPattern().isOutCapable()) {
original.getOut().setBody(mergeResult);
} else {
original.getIn().setBody(mergeResult);
}
return original;
}
}
在这个示例中,我看到他们可以访问交换原始文件,这不是“当前交换”吗?如果不是,那么“原始交换”代表什么交换?
他们所说的“当前交换”是什么意思
enrich
假设您希望将传入的Exchange用作另一个服务请求的参数。例如,传入的交换可以是一个userID,但您确实需要整个用户对象,因此您可以通过将userID传递给REST服务来丰富它,REST服务返回成为交换的用户对象,等等
pollEnrich
假设传入交换是一个简单的触发器,它告诉轮询消费者查找数据并创建交换(忽略传入交换的内容)。例如,您可能有一个计时器或其他业务流程事件,需要拾取一个文件进行处理,等等。也就是说,传入的Exchange数据不用于动态配置PollingConsumer…只有URI用于此操作
也就是说,从Camel 2.12开始,有一个选项可以指定一个聚合策略来组合rich
和pollrich
的传入/返回交换
有关聚合策略的示例,请参见