Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache camel ApacheCammel执行消息体_Apache Camel_Apache Servicemix - Fatal编程技术网

Apache camel ApacheCammel执行消息体

Apache camel ApacheCammel执行消息体,apache-camel,apache-servicemix,Apache Camel,Apache Servicemix,我有以下路线: <route id="import"> <from uri="file:/var/inputfolder?delete=true"/> <log message="Importing ${file:name} started."/> <setProperty pro

我有以下路线:

            <route id="import">
                    <from uri="file:/var/inputfolder?delete=true"/>
                            <log message="Importing ${file:name} started."/>
                            <setProperty propertyName="keepbody">
                                    <simple>${body}</simple>
                            </setProperty>
                            <setHeader headerName="BrandId">
                                    <simple>${file:name}</simple>
                            </setHeader>
                            <setHeader headerName="CamelExecCommandArgs">
                                    <simple>${file:absolute.path} ${header.BrandId.toString.split("_")[0]} Zip -a erase</simple>
                            </setHeader>
                    <to uri="exec://./transfile.php?workingDir=/usr/bin/&amp;args&amp;useStderrOnEmptyStdout=true"/>
                            <log message="stdout/stderr of /usr/bin/transfile.php:\n ${body}"/>

                    <choice>
                            <when>
                                    <simple>${bodyAs(String)} contains 'Return OK'</simple>
                                    <log message="Importing ${file:name} finished."/>
                            </when>
                            <otherwise>
                                    <log message="Importing ${file:name} failed."/>
                                    <setBody>
                                          <simple>${exchangeProperty.keepbody}</simple>
                                    </setBody>
                                    <to uri="file:/var/rejected"/>
                            </otherwise>
                    </choice>

            </route>

${body}
${file:name}
${file:absolute.path}${header.BrandId.toString.split(“”)[0]}Zip-a擦除
${bodyAs(String)}包含“返回确定”
${exchangeProperty.keepody}
路由检查文件夹/var/inputfolder中的文件。如果找到任何文件,它将执行transfile.php脚本,并在其参数中使用文件名。如果此执行的输出不包含字符串“Return OK”,则标准输出将被放入一个具有原始文件名的文件中/var/rejected文件夹。 但我想指出的是,在/var/rejected文件夹中,将显示包含原始内容的文件,而不是包含执行输出的文件。我知道,这是exec组件的正常行为

但是,我如何改变这一点来实现前面提到的功能呢


提前谢谢

您需要将消息正文存储为exchange属性,然后在
exec
之后替换正文

<setProperty propertyName="keepBody">
  <simple>${body}</simple>
</setProperty>

${body}
然后再恢复

<setBody>
 <simple>${exchangeProperty.keepBody}</simple>
</setBody>

${exchangeProperty.keepody}
请注意,根据您使用的Apache Camel的年限,名称
exchangeProperty
可能是较旧的名称,例如
属性
。更多信息,请访问:


我们正在考虑在Camel DSL中添加一个推送/弹出功能,以便将来更轻松地实现这一点:

感谢您的帮助,但不幸的是,我需要更多的帮助。在我的问题中,我改变了路径,但是我得到了一个包含以下行的异常:由:org.apache.camel.language.simple.types.SimpleIllegalSyntaxException引起:未知函数:exchangeProperty.keepody位于位置0${exchangeProperty.keepody}这里出了什么问题?我使用了apache-servicemix-5.3.0、camel核心(2.13.2)、camel exec(2.13.2)正如回答中所说,如果您使用的是旧版本的Camel,那么您可能需要使用“property”