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