我试图理解为什么序列化对象在收到时被删除。
这是总体布局: 1. 生成 JMS 消息并发送到外部 ActiveMQ 代理上的主题。该代码基于 Spring boot JMS 消息,可以在 http://bit.ly/QECQ21 查看。 。在我的示例中,我生成各种类型的消息(文本、POJO、 map ) 2. 我有 2 个 JMS 消费者订阅了该主题。
a.一种是java客户端。该客户端正确识别所有不同的消息类型。
b.第二个客户端是基于 websockets + stomp.js 的 javascript 客户端。这可以正确识别文本消息,但不能识别包含我的生产者生成的 POJO 的消息。
以下是 Web 客户端的示例输出(来源:http://bit.ly/Od0noF)。
我做错了什么?寻址有问题还是代码中有其他问题?关于我使用(或误用)STOMP 的方式?我必须在 Application.java 类中使用“tcp://localhost:61616”才能正确联系代理。
谢谢
消息优先级:4持久:true订阅:sub-0过期:0时间戳:1396418227090目的地:/主题/问候消息ID:ID:blackbox-53461-1396418226684-1:1:2:1:1内容-长度:4 ping
正文:ping
<小时/>消息优先级:4持久:true订阅:sub-0过期:0时间戳:1396418227117目的地:/主题/问候消息ID:ID:blackbox-53461-1396418226684-1:1:2:1:2
body :======>失踪的 body
<小时/>消息优先级:4持久:true订阅:sub-0过期:0时间戳:1396418227122目的地:/主题/问候消息ID:ID:blackbox-53461-1396418226684-1:1:2:1:3
body :======>失踪的 body
<小时/>消息优先级:4持久:true订阅:sub-0过期:0时间戳:1396418227125目的地:/主题/问候消息ID:ID:blackbox-53461-1396418226684-1:1:2:1:4内容-长度:5 关闭
正文:关闭
<小时/>最佳答案
还没有答案,所以我将添加我的发现。 STOMP 是基于文本的协议(protocol),因此正文需要转换为文本格式(例如 JSON)。就我而言,这可以使用 spring websockets 框架(内部使用 Jackson)或使用 Jackson 将对象显式编码为 JSON 来完成,并将它们作为文本消息传输
关于java - JMS/websocket 消息中缺少正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22802865/