【问题标题】:Consuming MSMQ with WCF使用 WCF 使用 MSMQ
【发布时间】:2012-05-02 09:59:30
【问题描述】:
MSMQ 和 WCF 的新功能。
我希望能够以高速率处理传入的 MSMQ 消息。我想让它成为多线程(和事务性的)。
这样做的最佳方法是什么?非常欢迎任何示例、代码 sn-ps、理论。
另外,WCF 如何知道 MSMQ 中是否有消息?或者我是否必须创建一个轮询 MSMQ 的 Windows 服务,然后对于找到的消息,在新线程上启动它并调用 WCF 服务并将消息传递给它?
最好的方法是什么?
非常感谢
【问题讨论】:
标签:
multithreading
wcf
msmq
【解决方案1】:
这里的答案是使用 WCF 并创建服务已知类型的数据契约。
这些已知类型是它期望从正在读取的队列中获得的对象。
要使其成为多线程和事务性,不仅队列需要是事务性的,还要修饰服务属性:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerSession, ReleaseServiceInstanceOnTransactionComplete = false)]
InstanceContextMode 默认为 perSession。
您还需要在配置文件中设置绑定
示例:http://msdn.microsoft.com/en-us/library/ms751493.aspx