我计划使用 Apache NMS 进行 ActiveMQ 消息传递,并且想知道我发送的对象将使用什么序列化方法?XML/二进制?什么控制序列化以及如何自定义它?
有没有人有使用 C# 对象执行此操作的经验?有什么你知道的陷阱吗?
对于 IObjectMessage,默认值为 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter。
您可以通过例如设置自己的
IObjectMessage m = session.CreateObjectMessage();
((ActiveMQObjectMessage)m).Formatter=new SoapFormatter();//Or any IFormatter
如果您不使用默认 BinaryFormatter 发送对象,则需要在访问接收方的 IObjectMessage.Body 之前设置格式化程序。
如果您愿意,您还可以发送/接收 IByteMessage/ITextMessage 并以您喜欢的任何方式将您的对象序列化为消息。