2009-08-31 35 views

回答

4

IObjectMessage的默认值为System.Runtime.Serialization.Formatters.Binary.BinaryFormatter。

你可以通过例如自己设置。

IObjectMessage m = session.CreateObjectMessage(); 

((ActiveMQObjectMessage)m).Formatter=new SoapFormatter();//Or any IFormatter 

您将需要在接收端访问IObjectMessage.Body如果你不使用默认的BinaryFormatter发送对象之前设置的格式。

如果您愿意,您还可以发送/接收IByteMessage/ITextMessage,并以任何您喜欢的方式将对象序列化为消息。

+0

任何关于二进制格式向后兼容性的好信息?删除/添加字段会发生什么情况? – TheSoftwareJedi 2009-08-31 18:31:55

+0

似乎在实践中(在我有限的经验atleat)缺少fileds只是得到他们的默认值。但是这个序列化与NMS/ActiveMQ无关。有很多关于在stackoverflow上进行序列化的问题,都围绕着这些问题。 – nos 2009-08-31 19:32:28