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

如何使用Spring DSL 在骆驼中记录标头值

狄阳秋
2023-03-14

这似乎应该很简单,原谅我的双关语。我正在尝试在一个spring DSL路由中记录一个camel报头。我已经看到了Java DSL的答案,但我一直在徒劳地寻找如何让它在spring DSL中工作。我试过了:

 <log message="ftping $simple{header.CamelFileName}"/>

以及:

 <log message="ftping ${header.CamelFileName}"/>

以及其他一些排列/变体,但所有这些都只是逐字记录该文本(即,它们不替换实际的标题名称)。

我错过了什么?

更新:这是我的xml文件的大部分:

<split>
    <simple>${body}</simple>
    <setHeader headerName="CamelFileName">
        <simple>${body.batchNumber}.xml</simple>
    </setHeader>
    <log message="SLH - 5 -- marshalling an EFileBatch to XML" loggingLevel="DEBUG" />
    <marshal>
        <jaxb prettyPrint="true" contextPath="generated.gov.nmcourts.ecitation"
                partClass="generated.gov.nmcourts.ecitation.NMCitationEFileBatch"
                partNamespace="EFileBatch" />
    </marshal>

    <log message="SLH - 6 -- xslt transform to add schema location" loggingLevel="DEBUG" />
    <to uri="{{addSchemaLocationXsltUri}}"/>

    <log message="SLH - 7 -- ftp now initiating" loggingLevel="DEBUG" />
    <log message="ftping ${headers.CamelFileName}"/>

    <to uri="{{ftpOdysseyInputPath}}"/>
    <log message="SLH - 8 -- ftp now complete" loggingLevel="DEBUG" />
</split>

共有3个答案

林玮
2023-03-14

在 JAVA DSL 中

from("logger")
.log(LoggingLevel.INFO, "${in.headers.CamelFileName}")
.end

日志级别来自org.apache.camel.日志级别

宋畅
2023-03-14

尝试以下操作,任一都可以:

<log message="ftping ${header[CamelFileName]}"/>
<log message="ftping ${headers.CamelFileName}"/>

< code>$simple{...}语法是在Camel 2.5中添加的,以避免与Spring ${...} -可能您使用的是旧版本?

严承允
2023-03-14

前段时间问了这个问题,并意识到我最终找到了答案,所以应该在这里发布它,以防其他人在搜索中找到此线程。这是有效的:

<log message="ftping $simple{in.header.CamelFileName}" loggingLevel="DEBUG"/>
 类似资料:
  • 我正在用apache Camel构建一个spring boot应用程序。我想让camel中的DSL监听spring boot启动时的相同端口。 我尝试了这个链接,但如果不使用组件,就无法解析它。我不希望我的路由看起来像,而是希望直接使用jetty Build.Gradle

  • 我是第一次使用Camel。我的试验项目是编写一个应用程序,该应用程序接收HTTP GET请求(使用Jetty)并通过Thrift将请求传递到另一台服务器。然后将收到的答案传递回客户端。(即,如果您愿意,我正在编写超文本传输协议-get请求和Thrift支持的服务器之间的数据交换机或中间件应用程序。) 我有一个完美的非驼峰版本,现在我正在尝试将驼峰等效物组合在一起。目前,我只想将jetty请求写入一

  • 脚本: CSV文件被发送到我的endpoint,Pojo将java数据和消息转换为我的一条路由,比如(“direct:consume”)路由,然后处理器处理该文件,处理消息并创建新的输出 问题: 文件只包含代码中断的一行 文件包含多行代码工作 尝试: 试图找到一种方法来确定交易记录的数量。getIn()。getBody() 阅读stackoverflow 阅读有关exchange的文档 在不知道记

  • 我使用骆驼与hazelcast组件和面临的问题与交换头,当交换通过hazelcast seda。 我需要轮询目录中的文件,并将交换发送到seda hazelcast队列(以处理集群中的交换)。 这种情况有一个简单的例子。有两个路由,在其他JVM中运行: 首先是轮询文件: 第二个问题是: 当我试图阅读像或其他,我意识到它们是空的。 通过hazelcast seda组件传输交换时,是否可以保存标头?

  • 我想在Camel环境中使用Jetty组件。这是我的spring配置的摘录。xml: 下面是用于返回字符串的代码: 本地地址有效(http://127.0.0.1/enc)但是浏览器没有正确显示字符串(显示为“abcÃö¼ÃŸ”–äääääŒääää‰)。我假设问题是一些编码。如何设置像“utf-8”这样的编码? 我在这里找不到任何提示(http://camel.apache.org/jetty.