I'm planning on using Apache NMS for ActiveMQ messaging, and am wondering what serialization method is going to be used on the objects I send? XML/Binary? What controls the serialization and how can I customize it?
Does anyone have experience doing this with C# objects? Are there any pitfalls that you know of?
The default is System.Runtime.Serialization.Formatters.Binary.BinaryFormatter for IObjectMessage.
You can set your own by e.g.
IObjectMessage m = session.CreateObjectMessage();
((ActiveMQObjectMessage)m).Formatter=new SoapFormatter();//Or any IFormatter
You'd need to set the formatter before accessing IObjectMessage.Body on the receiver side if you're not sending objects with the default BinaryFormatter.
If you wish, you can also send/receive IByteMessage/ITextMessage and serialize your objects to the messages yourself in any way you'd like.
来源:https://stackoverflow.com/questions/1358078/what-serialization-method-is-used-for-an-activemq-nms-c-sharp-object-message