【发布时间】:2012-03-19 21:17:40
【问题描述】:
我有不同类型的消息需要通过 MSMQ 发送给客户端。我没有使用 WCF,因为我想要一个我自己编写的解决方案。在客户端上接收消息时,如何区分消息正文的数据类型,因为理想情况下,我希望在查询消息时根据消息正文的类型设置 IFormatter。谢谢。
【问题讨论】:
我有不同类型的消息需要通过 MSMQ 发送给客户端。我没有使用 WCF,因为我想要一个我自己编写的解决方案。在客户端上接收消息时,如何区分消息正文的数据类型,因为理想情况下,我希望在查询消息时根据消息正文的类型设置 IFormatter。谢谢。
【问题讨论】:
如果您可以控制发送的消息格式,您可以将每个消息正文包装在一个带有“类型”属性的固定容器中。然后,您可以反序列化容器并根据“类型”属性确定如何处理实际包含的消息的反序列化。
例如
<dataContainer type="XYZ">
<!-- put your actual message content here inside a CDATA section -->
</dataContainer>
【讨论】:
如果您有多种类型的消息,通常会使用多个队列。 这避免了以后的任何潜在问题,即只能将特定类型的消息出队,以及对正在处理的消息类型的任何潜在混淆。
如果您的基础架构已经使用一个队列,那么添加另一个队列应该是最小的努力。
【讨论】: