我正在使用 WCF NetMessaging 向 ASB 发送消息。该消息可以包含任意数量的自定义数据协定。
我有一个带有自定义侦听器的 Service Fabric 无状态服务,用于 ASB 将消息推送到队列中。我见过的所有示例都只能处理一种类型的消息(似乎大多数指导都是可序列化为 JSON,但这不是我需要在这里做的)。我希望队列的订阅者能够处理许多消息(发送到服务的任何操作的任何消息)。
我可以将 Action 添加到 BrokeredMessage.Properties,这样我就知道将它发送到哪里。问题是我还没有弄清楚如何以任何有效的方式反序列化消息正文。
我可以从流中读取它并将其转换为字符串,但不能这样做: var myDTO = message.GetBody(); 这会引发序列化异常。我还尝试过传入 DataContractSerializer 的变体——尽管我认为这是默认设置。
此外,我真正需要的是一种在不知道正文中数据类型的情况下执行此操作的方法 - 可以想象,我可以添加更多消息。正文中序列化类型的属性,但我认为必须有一种直接的方法仅使用正文中的数据来执行此操作-毕竟 WCF 和类似技术可以轻松执行此操作。但是怎么做?
谢谢你的帮助,威尔