【发布时间】:2013-10-06 13:36:24
【问题描述】:
第一个问题:
我无法真正理解enrich() 和pollEnrich() 之间的区别。也许 Camel 使用的术语不是很好。
我在这里读到:http://camel.apache.org/content-enricher.html
使用丰富的 DSL 元素丰富内容
Camel 在 DSL 中提供了两种内容丰富器
- 丰富
- 投票丰富
enrich 使用 Producer 来获取附加数据。通常是 用于请求回复消息,例如调用外部 网络服务。另一方面,pollEnrich 使用轮询消费者来 获取附加数据。它通常用于事件消息 消息传递,例如读取文件或下载 FTP 文件。
我不明白有什么区别。他们似乎都通过消费获得了额外的数据(Web 服务响应、FTP 文件)。那么为什么他们说获取 Web 服务响应是由“生产者”完成的呢?
第二个问题:
在“行动中的骆驼”一书中 p。 72 他们说:
Enrich 和 pollEnrich 无法访问当前交换中的信息
rich 和 pollEnrich 都不能利用任何信息 从目前的交易所。这意味着,例如,您不能 将文件名标题存储在 pollEnrich 的交换中以用于 选择一个特定的文件。如果骆驼在未来这可能会改变 团队可以找到解决方案。
但是,他们给出了一个类似于以下的代码示例,用于实现聚合策略:
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;
}
}
在这个例子中,我看到他们可以访问Exchange original,这不是“当前交换”吗?如果不是,那么“原交易所”代表什么交易所?
他们所说的“当前交换”是什么意思?
【问题讨论】:
标签: activemq apache-camel