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

Posted

技术标签:

【中文标题】如何在 ActiveMQ 中通过 Stomp/JSON 使用 JMS 消息转换【英文标题】:How to use JMS Message Transformation in ActiveMQ with Stomp/JSON 【发布时间】:2010-09-28 23:52:08 【问题描述】:

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

Here 是指向 Stomp 和消息转换文档的链接。 Here 是一个关于补丁讨论的链接,其中有人展示了一个合法 JSON 对象的示例

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

“味精”: “标志1”:“值1”, “标志 2”:“值 2”

消息到达消息队列,但转换错误属性设置为“msg : msg”。

【问题讨论】:

【参考方案1】:

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

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

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

选择器只能用于属性和标题。

【讨论】:

非常感谢您的回答正是我要找的!【参考方案2】:

只要 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": “名称”:“德扬”, “城市”:“贝尔格莱德”

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

希望这会有所帮助, 德让

【讨论】:

它现在应该可以工作了,但我不知道这是否仍然适用,或者现在是否有更好的方法。【参考方案3】:

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

【讨论】:

以上是关于如何在 ActiveMQ 中通过 Stomp/JSON 使用 JMS 消息转换的主要内容,如果未能解决你的问题,请参考以下文章

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

Spring+Stomp+ActiveMq实现websocket长连接

Spring+Stomp+ActiveMq实现websocket长连接

js接收activeMq消息

STOMP 上的重复事件 Socket.io 和 Node.js

如何使用 stomp.js 在 javascript 中使用 Web 套接字消息?