ActiveMQ NMS C# 对象消息使用啥序列化方法?
Posted
技术标签:
【中文标题】ActiveMQ NMS C# 对象消息使用啥序列化方法?【英文标题】:What serialization method is used for an ActiveMQ NMS C# object message?ActiveMQ NMS C# 对象消息使用什么序列化方法? 【发布时间】:2010-11-24 09:23:26 【问题描述】:我正计划使用 Apache NMS 进行 ActiveMQ 消息传递,我想知道我发送的对象将使用什么序列化方法? XML/二进制?什么控制序列化以及如何自定义它?
有没有人有使用 C# 对象执行此操作的经验?你知道哪些陷阱?
【问题讨论】:
【参考方案1】:IObjectMessage 的默认值为 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter。
您可以设置自己的,例如
IObjectMessage m = session.CreateObjectMessage();
((ActiveMQObjectMessage)m).Formatter=new SoapFormatter();//Or any IFormatter
如果您不使用默认 BinaryFormatter 发送对象,则需要在访问接收方的 IObjectMessage.Body 之前设置格式化程序。
如果您愿意,您还可以发送/接收 IByteMessage/ITextMessage 并以您喜欢的任何方式将您的对象序列化为消息。
【讨论】:
关于二进制格式的向后兼容性有什么好的信息吗?删除/添加的字段会怎样? 在实践中似乎(以我有限的经验)丢失的文件只是得到它们的默认值。不过,这种序列化与 NMS/ActiveMQ 无关。关于 *** 上的序列化有很多问题,请围绕这些问题进行讨论。以上是关于ActiveMQ NMS C# 对象消息使用啥序列化方法?的主要内容,如果未能解决你的问题,请参考以下文章
.Net NMS.ActiveMQ 我应该存储消息发送调用之间的会话和连接吗
ActiveMQ NMS:当代理关闭时,connection.start() 使用故障转移协议挂起