我在我的archtiecure中以多种方式使用JMS。
延迟和性能是我们架构中非常重要的因素。
我已经读过,使用带有ObjectMessage的jms以便在消息中传递整个java对象需要很多性能。
替代解决方案是转换为json,protobuff并将消息作为bytemessage / text消息发送。
请你帮我说清楚:
以防我选择json。在从String转换为json后,我应该发送消息
作为测试或ByteArray? (有什么不同吗?)
是从发送方转换字符串到json的总时间和
消费者方面的反之亦然,那么只需发送ObjectMessage就可以了吗?
感谢, 射线。
答案 0 :(得分:1)
只需2美分
1)IMO,您应该使用TextMessage在String中发送数据并将其反序列化为Json Object。 我不能告诉你确切的性能统计数据,但我猜序列化比编组更好,因为当你将它重建为对象时它的开销较小。
Comparing Marshalling with serialization
2)此外,仅仅避免将数据作为对象流发送, 消息可以由非基于Java的消息解决方案接收和处理
Externalizable的一大缺点是你必须保持这一点 自己逻辑 - 如果你在课堂上添加,删除或更改某个字段, 您必须将writeExternal / readExternal方法更改为account 为了它。