Apache camel Apache Camel转换不工作

Apache camel Apache Camel转换不工作,apache-camel,Apache Camel,我有一条骆驼路线: <route id="externalRestPushRoute"> <from uri="jms:pushProcessedRecordsToExternal" /> <setHeader headerName="PAYLOAD"> <simple>body</simple> </setHeader> <m

我有一条骆驼路线:

    <route id="externalRestPushRoute">
        <from uri="jms:pushProcessedRecordsToExternal" />
        <setHeader headerName="PAYLOAD">
          <simple>body</simple>
        </setHeader>
        <marshal ref="jack"></marshal>
        <to uri="http://localhost/front/rest/karec/dummy-push"/>
        <transform>
            <simple>in.header[PAYLOAD]</simple>
        </transform>
        <to uri="bean:noAuthRecordPersistenceService?method=deliverySuccess" />
    </route>

身体
in.报头[有效载荷]
这个想法是: 我想将一个JSON格式的对象传递给REST端点(所有的头都已正确设置,REST端点接收JSON格式)/ 要将对象转换为JSON格式,我使用marshal,它可以工作。 现在,http端点返回的响应类型是java.io.InputStream,但我不在乎。 我关心的是在封送之前将主体转换回原始对象。 在封送一个名为PAYLOAD的头之前,我将对象保存在头中。 现在我想使用transform将其返回到消息体中。
嗯,这似乎不起作用。当它到达最后一个bean时,它抱怨body仍然是java.io.InputStream类型。

将body存储在exchange属性上,而不是头,这样更安全

    <setProperty propertyName="PAYLOAD">
      <simple>body</simple>
    </setProperty>


    <transform>
        <simple>${property.PAYLOAD}</simple>
    </transform>

身体
${property.PAYLOAD}