MSMQ 和 WCF 的新功能。我希望能够以高速率处理传入的 MSMQ 消息。我想让它成为多线程(和事务性的)。这样做的最佳方法是什么?非常欢迎任何示例、代码片段、理论。另外,WCF 如何知道 MSMQ 中是否有消息?或者我是否必须创建一个轮询 MSMQ 的 Windows 服务,然后对于找到的消息,在新线程上启动它并调用 WCF 服务并将消息传递给它?什么是最好的方法?
非常感谢
MSMQ 和 WCF 的新功能。我希望能够以高速率处理传入的 MSMQ 消息。我想让它成为多线程(和事务性的)。这样做的最佳方法是什么?非常欢迎任何示例、代码片段、理论。另外,WCF 如何知道 MSMQ 中是否有消息?或者我是否必须创建一个轮询 MSMQ 的 Windows 服务,然后对于找到的消息,在新线程上启动它并调用 WCF 服务并将消息传递给它?什么是最好的方法?
非常感谢
这里的答案是使用 WCF 并创建服务已知类型的数据合同。这些已知类型是它期望从正在读取的队列中的对象。
要使其成为多线程和事务性,不仅队列需要是事务性的,还需要装饰服务属性:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerSession, ReleaseServiceInstanceOnTransactionComplete = false)]
InstanceContextMode 默认为 perSession。
您还需要在配置文件上设置绑定