第一个问题:
我无法真正理解rich()
和pollrich()
之间的区别。也许骆驼使用的术语不太好。
我在这里读到:http://camel.apache.org/content-enricher.html
使用丰富的DSL元素进行内容丰富
骆驼有两种口味的内容在DSL中更丰富
enrich使用生产者获取附加数据。它通常用于请求-应答消息传递,例如调用外部web服务。另一方面,PollRich使用轮询消费者获取附加数据。它通常用于事件消息传递,例如读取文件或下载FTP文件。
我不明白有什么区别。他们似乎都通过消费来获取额外的数据(Web服务响应、FTP文件)。那么为什么他们说获取Web服务响应是由“生产者”完成的呢?
第二个问题:
在《骆驼行动》一书第72页中,他们说:
Enrich和pollEnrich无法访问当前交换中的信息
enrich和pollEnrich都不能利用当前交易所的任何信息。例如,这意味着您不能在exchange上存储文件名头,以便用于选择特定文件。如果骆驼队能够找到解决方案,这一点在未来可能会改变。
然而,它们给出了一个类似于以下的代码示例,用于实现聚合策略:
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;
}
}
在这个例子中,我看到他们可以访问交换原始
,这不是“当前交换”吗?如果不是,那么“原始交换”代表什么交换?他们所说的“当前交换”是什么意思?
区别如下:
>
pollEnrich
假设传入的交换是一个简单的触发器,告诉轮询消费者查找数据并创建交换(忽略传入交换的内容)。例如,您可能有一个计时器或其他业务流程事件,需要提取一个文件进行处理,等等。也就是说,传入的Exchange数据不用于动态配置PollingConsumer。。。只有URI用于此操作。
也就是说,从Camel 2.12开始,有一个选项可以指定一个聚合策略,将rich
和pollrich
的传入/返回交换组合起来
请参阅此单元测试以获取具有聚合策略的polenrich示例
我正在尝试使用Camel的pollEnrich功能,但它的行为并不像我想的那样……我并不是说它坏了,而是想知道是否有办法获得我想要的行为。也就是说,我有一个XML(蓝图)定义的路线,它大致如下: 现在,响应通常返回得很好(例如,在web浏览器中)。问题似乎是,它不只是在一行上,出于某种原因,Camel将每一行依次读入同一个缓冲区,从字符0开始……所以我们最终得到的是pollEnrich输出中的一行
在我的骆驼路线中,我使用来自队列的消息;每条消息都包含标题“pad”(路径)和文件前缀。例如: 消息1: pad="/some/dir ",file="AAA "消息2: pad="/another/dir ",file="BRD " 每条消息,我想要创建一个文件: 消息1: /一些/目录/AAA.tar (包含所有文件 /一些/目录/AAA*) 消息2: /另一个/目录/BRD.tar (包含
我试图测试camel与kafka的集成,如这里所述 以下是我的代码 然而,我得到了以下错误 请提出可能遗漏的内容。
我有一个对我的Rest Webservice的AJAX请求,带有一个自定义头“login”。 用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64;RV:58.0)Gecko/20100101 Firefox/58.0 接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 接受语言:fr,f
我试图将Kafka偏移量保存到文件中,我使用Spring Boot,似乎偏移量在文件中写入,但没有读取,所以事实上骆驼将在重新启动时从Kafka主题的开头开始读取
骆驼ftp和FTP2有什么区别?我想写一个新的ftpendpoint,但我在这两者之间感到困惑。此外,如果可能的话,请说明哪一个比其他的好,以及为什么。