使用RabbitMQ和Mule进行对象通信与String

时间:2015-06-22 06:29:01

标签: rabbitmq mule communication

我正在使用mule和rabbitmq开展项目。方案是,我的应用程序侦听队列,处理消息然后响应它。我的问题是,是否接收java对象,使用mule" byte-array-to-object-transformer"并且返回响应对象可能比接收json具有更好的性能,将其转换为相关对象,然后再次转换响应并返回json。我认为这取决于rabbitmq机制和骡子变形金刚。

2 个答案:

答案 0 :(得分:3)

性能问题的第1条规则:在您证明自己有性能问题之前,您没有性能问题。

这就是说,这是https://github.com/RichardHightower/json-parsers-benchmark/wiki/Serialization-Jackson-vs.-Boon-vs.-Java-Serialization中的一个有趣的内容:

  

大多数人都认为Java对象序列化速度比   Jackson JSON序列化因为Jackson正在使用JSON和Java   对象序列化是二进制的。但大多数人都错了。

     

Jackson JSON序列化比在Java对象中构建快得多   序列化。

就个人而言,根据经验,我尽量避免通过网络发送序列化的Java对象,因为事情可能会以可怕的方式崩溃。通过线路发送数据的方式更加强大,例如JSON。发送数据而不是序列化对象使您在处理数据时非常松懈,例如通过优雅地处理新/意外字段而不是因为二进制不兼容而在火灾中死亡。

答案 1 :(得分:0)

我们使用RabbitMQ进行序列化(由单独的lib提供)。它在消息长度方面提供了比JSON更好的性能,但在您的情况下这可能不是非常重要。

序列化方法的一个减号是所有对象(及其所有非瞬态字段)都应该是Serializable,这并不总是可行的。此外,在使用序列化时,您应始终注意发送和接收部分使用相同的语言,即具有相同版本的类。

如果您决定使用序列化,请查看FST - 我们正在使用的内容,它是标准Java序列化的绝佳替代品。它非常易于使用,并且在速度和输出尺寸方面都显示出很好的效果。