Apache Camel转换无法正常工作

时间:2014-05-29 17:47:16

标签: apache-camel

我有这条骆驼路线:

    <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>

这个想法是这样的: 我想以JSON格式将对象传递给REST端点(所有头文件都已正确设置,其余端点接收json格式)/ 要将对象转换为JSON格式,我使用marshal并且它可以工作。 现在,从http端点返回的响应是java.io.InputStream类型,但我不在乎。 我关心的是在编组之前将身体转换回原始物体。 在编组名为PAYLOAD的标题之前,我确实将对象保存在标题中。 现在我想使用transform将其恢复到消息正文中。 嗯,这似乎不起作用。当它到达最后一个bean时,它会抱怨body仍然是java.io.InputStream类型。

1 个答案:

答案 0 :(得分:1)

将正文存储在交换属性而不是标题上,这样更安全。

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


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