使用 pollEnrich 后,Camel 使用旧 header
Camel use old header after use pollEnrich
我的目标是读取 2 个文件。
我的逻辑如下:
我读取了第一个文件如果是各种headers强加的txt,之后我通过pollEnrich读取了第二个文件但是我之前设置的headers已经不存在了。
下面是我的代码:
<routes xmlns="http://camel.apache.org/schema/spring">
<route id="StartProcessCamunda">
<!--Questa linea di codice guarda la cartella input e quando viene inserito un file lo muove dentro la cartella processed/data di oggi/ se non esiste la data di oggi la crea -->
<from uri="file:/input?move=processed/${date:now:dd-MM-yyyy}/${file:name}"/>
<setHeader name="OnlyFileNamePDF">
<simple>
${file:onlyname.noext}
</simple>
</setHeader>
<choice>
<when>
<simple>${file:ext} == "pdf"</simple>
<log message="Prima poll = ${header.FileNamePDF}"/>
<pollEnrich>
<simple>file:/input?fileName=${header.OnlyFileNamePDF}.xml&noop=true</simple>
</pollEnrich>
<log message="Dopo poll = ${header.FileNamePDF}"/>
<marshal>
<base64 lineLength="100000000000" />
</marshal>
<setHeader name="FileXML">
<simple>${bodyAs(String).lines[0]}</simple>
</setHeader>
<setHeader name="FileNameXML">
<simple>
${file:name}
</simple>
</setHeader>
</when>
</choice>
</route>
有人可以帮助我吗?
用 Java-DSL 对此进行了测试,看起来调用 pollEnrich 会清除 headers 或用新消息替换消息。使用 setProperty 代替交换属性,并用 ${exchangeProperty.FileNamePDF}
代替。
我的目标是读取 2 个文件。 我的逻辑如下: 我读取了第一个文件如果是各种headers强加的txt,之后我通过pollEnrich读取了第二个文件但是我之前设置的headers已经不存在了。 下面是我的代码:
<routes xmlns="http://camel.apache.org/schema/spring">
<route id="StartProcessCamunda">
<!--Questa linea di codice guarda la cartella input e quando viene inserito un file lo muove dentro la cartella processed/data di oggi/ se non esiste la data di oggi la crea -->
<from uri="file:/input?move=processed/${date:now:dd-MM-yyyy}/${file:name}"/>
<setHeader name="OnlyFileNamePDF">
<simple>
${file:onlyname.noext}
</simple>
</setHeader>
<choice>
<when>
<simple>${file:ext} == "pdf"</simple>
<log message="Prima poll = ${header.FileNamePDF}"/>
<pollEnrich>
<simple>file:/input?fileName=${header.OnlyFileNamePDF}.xml&noop=true</simple>
</pollEnrich>
<log message="Dopo poll = ${header.FileNamePDF}"/>
<marshal>
<base64 lineLength="100000000000" />
</marshal>
<setHeader name="FileXML">
<simple>${bodyAs(String).lines[0]}</simple>
</setHeader>
<setHeader name="FileNameXML">
<simple>
${file:name}
</simple>
</setHeader>
</when>
</choice>
</route>
有人可以帮助我吗?
用 Java-DSL 对此进行了测试,看起来调用 pollEnrich 会清除 headers 或用新消息替换消息。使用 setProperty 代替交换属性,并用 ${exchangeProperty.FileNamePDF}
代替。