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

Phi*_*lan 6 json activemq-classic stomp

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

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

我发送的JSON对象的格式(漂亮的打印)与此类似:

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

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

Phi*_*lan 5

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

{“地图” : 
  {“入口” : 
    [ 
      { "string1": [ "key1", "value1" ] },
      { "string2": [ "key2", "value2" ] }
    ]
  }
}

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

选择器仅可用于属性和标题。


小智 3

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

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

它已被正确注释,因此可以用以下 JSON 表示

{"pojo":{ "name":"德扬", "city":"贝尔格莱德" }}

您可以尝试在您的课程中使用相同的方法。

希望这有帮助,德扬