当前位置: 首页 > 知识库问答 >
问题:

Camel-content enricher:enrich()与pollEnrich()的比较

司寇经亘
2023-03-14

第一个问题:

我无法真正理解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;
    }

}

在这个例子中,我看到他们可以访问交换原始,这不是“当前交换”吗?如果不是,那么“原始交换”代表什么交换?他们所说的“当前交换”是什么意思?

共有1个答案

通建安
2023-03-14

区别如下:

>

pollEnrich假设传入的交换是一个简单的触发器,告诉轮询消费者查找数据并创建交换(忽略传入交换的内容)。例如,您可能有一个计时器或其他业务流程事件,需要提取一个文件进行处理,等等。也就是说,传入的Exchange数据不用于动态配置PollingConsumer。。。只有URI用于此操作。

也就是说,从Camel 2.12开始,有一个选项可以指定一个聚合策略,将richpollrich的传入/返回交换组合起来

请参阅此单元测试以获取具有聚合策略的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,但我在这两者之间感到困惑。此外,如果可能的话,请说明哪一个比其他的好,以及为什么。