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

我如何处理轮询后的上一个标头值?

易炳
2023-03-14

全部。

我有一些骆驼路线。我的场景如下。

1.远程服务器上的文件大小检查

2.将文件大小存储在标题上

3.通过PollRich通过sftp获取文件

4.将下载文件的大小与原始头文件值的大小进行比较

5.如果有不同,请重试下载

我知道旧标题的价值在投票后消失了。我能做些什么来满足我的场景吗?

非常感谢。

共有2个答案

杨安歌
2023-03-14

您应该能够使用带有AggregationStrategy的polEnrich,该AggregationStrategy实现了原始消息和丰富消息的合并方式。

我猜您得到的是默认策略的合并结果,因为您没有引用策略。

看看Camel文档中的Enrich选项的第一个示例(“使用Fluent Builders”部分)。

我认为您应该能够将原始消息中的标题集成到合并消息中,以便在充实步骤之后它们仍然可用。

巫马盛
2023-03-14

正如@burki所说,自定义聚合策略将起作用。这是一个将消息标头和交换参数从初始交换传播到新交换的示例。

.pollEnrich()
.simple("myUrl?param=${header.myUrlParameter}")
.aggregationStrategy( new AggregationStrategy() { 
    public Exchange aggregate( Exchange oldExchange, Exchange newExchange ) 
    { 
        newExchange.getIn().setHeader( "MyHeader", oldExchange.getIn().getHeader( "MyHeader" ) );
        newExchange.setProperty( "MyProperty", oldExchange.getProperty( "MyProperty" ) );
        return newExchange; 
    } } )

我希望这能有所帮助。

 类似资料:
  • 问题内容: 我正在添加这样的标注视图: 尽管我的函数从未被调用过……但我很好奇理解原因并获得了一些可以处理与标注视图交互的东西。 问题答案: 这是因为注释视图仅检测其边界内的触摸。由于您的标注视图超出了范围,因此子视图无法识别点击。您需要在注释视图中覆盖该方法,以便您的标注实际上可以检测到触摸。 这是Objective-C中的一个示例: 编辑 : 迅捷版:

  • 我对Java是个新手,我正在尝试做一个非常基本的测试,检查API的响应是否为200ok。你能告诉我,为了传递多个标题Id、Key和ConId,我需要在下面的脚本中更改什么吗?

  • 我有一个模块,它用以指定的时间间隔轮询AWS SQS队列,每次一条消息。方法如下: 接收并处理消息后,使用将其从队列中删除。 我已经创建了一个可执行的jar文件,它部署在大约40个实例中,并且正在积极地轮询队列。我能看到他们每个人都收到信息。但在AWS SQS控制台中,我只能在“飞行中的消息”栏中看到数字0、1、2或3。为什么即使有40多个不同的消费者正在从队列接收消息呢?此外,队列中可用的消息数

  • 基于名字的虚拟主机 Nginx首先选定由哪一个虚拟主机来处理请求。让我们从一个简单的配置(其中全部3个虚拟主机都在端口*:80上监听)开始: server { listen 80; server_name example.org www.example.org; ... } server { listen 80; server_nam

  • 问题内容: 是否有任何查询/方式来显示 所有 服务器上执行的最后一个查询? 问题答案: 对于那些拥有MySQL> = 5.1.12的用户,可以在运行时全局控制此选项: 执行 执行 看看桌子 如果您希望输出到文件而不是表: 默认值 。 我更喜欢这种方法来编辑.cnf文件,因为: 您没有编辑文件,并可能永久打开日志记录 您不会在文件系统中四处寻找查询日志-甚至更糟的是,由于需要完美的目的地而分心。 您