使用ProducerTemplate时自动转换为JSON

时间:2015-05-29 09:01:10

标签: apache-camel

我想将包含Java POJO的JMS消息发送到ActiveMQ,并且所有消息都应该转换为JSON文档。因此,我需要将POJO转换为JSON的机制,并将创建的文档作为文本消息发送到ActiveMQ。我想使用ProducerTemplate#send(...)方法而无需定义路由。我在服务器上使用路由,但我认为在客户端这样做是一种矫枉过正的行为。

这是xml config:

<camel:camelContext id="camel-client">
    <camel:template id="camelTemplate" />
    <camel:dataFormats>
        <camel:json id="json" library="Jackson" />
    </camel:dataFormats>        
</camel:camelContext>

和java代码:

@EndpointInject(uri = "jms:queue:test?jmsMessageType=Text")
private ProducerTemplate camelTemplate;

@Test
public void send() {
    Address address = new Adress("Eric Mouller", "ForstenriederAlle 99", 81476);
    camelTemplate.sendBody(address);
}

当前实现在toString()上调用Adress,但我想自动将其转换为JSON,是否可能?

1 个答案:

答案 0 :(得分:0)

根据我的理解,你试图获取一个java对象并将其转换为json字符串。所以像Gson这样的东西会为你创造奇迹。

Gson gson = new Gson();

String address = gson.toJson(address);

参考: https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/Gson.html