【发布时间】:2010-11-24 09:23:26
【问题描述】:
我正计划使用 Apache NMS 进行 ActiveMQ 消息传递,我想知道我发送的对象将使用什么序列化方法? XML/二进制?什么控制序列化以及如何自定义它?
有没有人有使用 C# 对象执行此操作的经验?你知道哪些陷阱?
【问题讨论】:
我正计划使用 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 并以您喜欢的任何方式将您的对象序列化为消息。
【讨论】: