JMS:将字符串或对象作为有效负载交付,这相对更快?

时间:2015-03-23 23:37:44

标签: jms activemq

我有一个简单的Person对象,其中包含一些人的基本信息。如果我想通过JMS发送它:

  1. 我可以将此对象转换为JSON,然后将其作为String对象传递。
  2. 我可以直接使用Person对象作为有效负载。
  3. 我使用ActiveMQ作为JSM提供程序。哪种方式更快? 如果我需要发送MapList作为有效负载,该怎么办?

1 个答案:

答案 0 :(得分:0)

这完全取决于序列化的性能,而不是jms / activemq。因此,ObjectMessage是使用java序列化的传输中的二进制blob,对于字符串消息,您可以选择所需的任何序列化处理器。

This article with runnable benchmarks表明json序列化可以和java对象序列化一样快。虽然这篇文章显然有偏见,但你可以注意到jackson / JSON序列化和java序列化在性能方面也非常接近。

我猜你可以用自己的数据衡量自己。无论哪种方式,它都可能是微观优化。如果序列化速度真的那么重要,那么看看你是否可以根据发送的对象来调整大小/数量。

作为最后一点,如果你处理非常大的有效载荷,那么尺寸和运输时间将有助于提高性能。在这种情况下,您可能希望确保您的json没有缩进,也可能还要压缩。