骆驼序列化json在死信队列中

时间:2013-01-18 10:32:42

标签: java json activemq apache-camel

我必须用Json格式在DeadLetterQueue中存储我的对象(CcRequest)。

怎么可能?

这是我的简单背景:

<camelContext id="el1DMRCamelContext" autoStartup="true" xmlns="http://camel.apache.org/schema/blueprint" >

    <template id="producerTemplate" />

    <!-- Routes -->
    <route id="createCcProcessorRoute" errorHandlerRef="createCcErrorHandler" >
        <from uri="activemq:queue:createCc" />
        <process ref="createCcProcessor" />
    </route>
</camelContext>

<bean id="createCcErrorHandler" class="org.apache.camel.builder.DeadLetterChannelBuilder" >
    <property name="deadLetterUri" value="activemq:queue:createCcDLQ" />
    <property name="redeliveryPolicy" ref="redeliveryPolicy" />
</bean>

我希望我的activemq:queue:createCcDLQ中的对象(CcRequest存放在交换体中)是json格式而不是二进制格式。

有可能吗?

1 个答案:

答案 0 :(得分:2)

我不会将你想要做的事情归类为死信处理程序。死信通常只是移动/重新传递原始信息。

使用excetion子句非常简单。

<dataFormats>
    <json id="jsonFormat" library="Jackson"/>
</dataFormats>


<onException>
  <exception>java.lang.RuntimeException</exception>
  <marshal ref="jsonFormat"/>
  <to uri="activemq:queue:createCcDLQ"/>
</onException>

Camel Exception Clause docs

Camel JSON docs