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

2022-09-03 17:35:08

这似乎应该很简单,原谅双关语。我正在尝试在春季DSL路由中记录骆驼标头。我已经看到了Java DSL的答案,但我一直在徒劳地寻找如何在春季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>

答案 1

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

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

答案 2

请尝试以下操作,其中任何一个都可以:

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

该语法是在Camel 2.5中添加的,以避免与Spring发生冲突 - 可能是您使用的是旧版本?$simple{...}${...}


推荐