使用Windows服务通过WCF处理MSMQ消息

时间:2008-12-16 22:06:40

标签: wcf msmq msmq-wcf

我们有一个解决方案,我们使用Windows服务选择消息。

Windows服务每隔2分钟触发一次并检索MSMQ消息以将其传递给Web服务。

  1. 我可以创建一个WCF服务,它会自动从MSMQ队列中获取消息吗?
  2. 如果支持自动调用,可以使用WCF服务来避免使用Windows服务吗?

2 个答案:

答案 0 :(得分:7)

第1季度:你可以自动从MSMQ中获取消息,你需要查看netmsmqbinding,你需要考虑一些设计注意事项,如果你习惯了原生的MSMQ,你知道你有能够窥视消息。但是当你使用WCF时,你就失去了窥探的能力。 WCF将拦截MSMQ中的消息,您负责保持WCF服务和窥视应用程序同步。 您还需要查看是否需要事务性或非事务性队列,并且必须根据它修改绑定。

Q2:您需要在Windows服务或IIS7中托管WCF服务。如果您在IIS7中托管,请查看启用MSMQ WAS侦听器

这是一篇很好的文章: http://blogs.msdn.com/tomholl/archive/2008/07/12/msmq-wcf-and-iis-getting-them-to-play-nice-part-1.aspx

答案 1 :(得分:2)

将消息从MSMQ传输到Web服务调用的一种方法是使用netMsmqBinding服务端点和支持相同合同的basicHttpBinding客户端端点。 netMsmq服务将自动从队列中获取消息并将其反序列化为对象。在netMsmq服务的实现中,只需实例化basicHttp客户端代理并调用相同的方法。基本上是从Web服务到MSMQ的传递或代理模式,反之亦然。在Juval Lowy的“编程WCF”中,他将此模式称为队列的“HTTP桥”。