如何使用Stomp / JSON在ActiveMQ中使用JMS消息转换

时间:2008-12-31 10:08:09

标签: json activemq stomp

我正在以JSON格式向ActiveMQ服务器发送消息。我正在尝试使用JMS Transformation将JSON编码对象转换为真正的Java对象,希望能够在内部数据上使用选择器。

Here是有关Stomp和Message Transformation的文档的链接。 Here是有关修补程序讨论的链接,其中某人显示了合法JSON对象的示例

我发送的JSON对象的格式(非常简洁)与此类似:

{
   "msg": {
      "flag1" : "value1",
      "flag2" : "value2"
   }
}

消息到达消息队列,但transform-error属性设置为'msg:msg'。

3 个答案:

答案 0 :(得分:4)

转换接受的唯一格式jms-map-json或jms-object-json是一种简单的Map格式,在JSON中是:

{"map" : 
  {"entry" : 
    [ 
      { "string1": [ "key1", "value1" ] },
      { "string2": [ "key2", "value2" ] }
    ]
  }
}

这与论坛中显示的格式相同。此格式表示java中的名称/值对映射对象。

选择器仅适用于“属性”和“标题”。

答案 1 :(得分:3)

只要XStream可以处理它,就可以对jms-object-json转换使用任何JSON表示法。您可以查看一些示例的测试用例。在那里,我们使用SamplePojo类:

https://svn.apache.org/repos/asf/activemq/trunk/activemq-stomp/src/test/java/org/apache/activemq/transport/stomp/SamplePojo.java

已正确注释,因此可以使用以下JSON

表示

{ “POJO”:{         “名”:“德扬”         “城市”:“贝尔格莱德”         }}

您可以尝试对您的班级使用相同的方法。

希望这有帮助, 德扬

答案 2 :(得分:0)

应该提到的是ActiveMQ版本必须至少为5.8,因为使用5.6版本时,在转换不起作用时会遇到问题。