对象通信与使用RabbitMQ和Mule的字符串

对象通信与使用RabbitMQ和Mule的字符串,rabbitmq,mule,communication,Rabbitmq,Mule,Communication,我正在使用mule和rabbitmq进行一个项目。场景是,我的应用程序侦听队列,处理消息,然后响应它。我的问题是,使用mule“byte array to object transformer”接收java对象并返回响应对象是否比接收json、将其转换为相关对象然后再次转换响应并返回json具有更好的性能。我认为这取决于rabbitmq机制和mule transformers两者。性能问题规则#1:在证明您有性能问题之前,您不会有性能问题。 也就是说,这里有一点很有趣: 大多数人认为Java对象

我正在使用mule和rabbitmq进行一个项目。场景是,我的应用程序侦听队列,处理消息,然后响应它。我的问题是,使用mule“byte array to object transformer”接收java对象并返回响应对象是否比接收json、将其转换为相关对象然后再次转换响应并返回json具有更好的性能。我认为这取决于rabbitmq机制和mule transformers两者。

性能问题规则#1:在证明您有性能问题之前,您不会有性能问题。

也就是说,这里有一点很有趣:

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

Jackson JSON序列化比内置Java对象快得多 序列化

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

性能问题规则#1:在证明您有性能问题之前,您不会有性能问题。

也就是说,这里有一点很有趣:

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

Jackson JSON序列化比内置Java对象快得多 序列化

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

性能问题规则#1:在证明您有性能问题之前,您不会有性能问题。

也就是说,这里有一点很有趣:

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

Jackson JSON序列化比内置Java对象快得多 序列化

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

性能问题规则#1:在证明您有性能问题之前,您不会有性能问题。

也就是说,这里有一点很有趣:

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

Jackson JSON序列化比内置Java对象快得多 序列化


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

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

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


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

我们使用带有序列化的RabbitMQ(由单独的库提供)。就消息长度而言,它提供了比JSON更好的性能,但这在您的情况下可能不是很重要

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


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

我们使用带有序列化的RabbitMQ(由单独的库提供)。就消息长度而言,它提供了比JSON更好的性能,但这在您的情况下可能不是很重要

连载的减号