在JMS中使用bytemessage而不是objectMessage

时间:2013-03-05 07:48:02

标签: java json performance java-ee jms

我在我的archtiecure中以多种方式使用JMS。

延迟和性能是我们架构中非常重要的因素。

我已经读过,使用带有ObjectMessage的jms以便在消息中传递整个java对象需要很多性能。

替代解决方案是转换为json,protobuff并将消息作为bytemessage / text消息发送。

请你帮我说清楚:

  1. 以防我选择json。在从String转换为json后,我应该发送消息
      作为测试或ByteArray? (有什么不同吗?)

  2. 是从发送方转换字符串到json的总时间和
    消费者方面的反之亦然,那么只需发送ObjectMessage就可以了吗?

  3. 感谢, 射线。

1 个答案:

答案 0 :(得分:1)

只需2美分

1)IMO,您应该使用TextMessage在String中发送数据并将其反序列化为Json Object。     我不能告诉你确切的性能统计数据,但我猜序列化比编组更好,因为当你将它重建为对象时它的开销较小。

Comparing Marshalling with serialization

2)此外,仅仅避免将数据作为对象流发送,  消息可以由非基于Java的消息解决方案接收和处理

来自Java Dzone

  

Externalizable的一大缺点是你必须保持这一点   自己逻辑 - 如果你在课堂上添加,删除或更改某个字段,   您必须将writeExternal / readExternal方法更改为account   为了它。