代码之家  ›  专栏  ›  技术社区  ›  Kirk Broadhurst

WCF MSMQ与IIS服务绑定-如何实例化该服务?

  •  7
  • Kirk Broadhurst  · 技术社区  · 15 年前

    我有一个带有netmsmqbinding的wcf服务。我的客户端可以向我的队列发送消息,并且当服务运行时,它会按照预期从队列中检索消息。如果服务未运行,则接收到的消息将排队,直到服务启动。

    我的问题是,当消息到达队列时,服务不会启动。该服务托管在iis中,因此在iis收到请求之前不会实例化它。如果我浏览到服务,它会处理队列中的消息,但显然这不是我想要的处理队列的方法!

    我希望我需要更改服务实现,或更改iis设置,但我不知道要更改的位置或内容。

    更新

    有人在WCF上使用MSMQ吗?我让它工作了很短一段时间-我启用了 不同的 在同一个服务器上的网站,奇怪的是-但现在它不知何故又停止工作了。

    我遇到的唯一问题是当队列中有消息时激活服务。目前,队列只在服务被实例化时处理,例如当我浏览.svc文件时。我在应用程序上启用了net.msmq协议,在站点上启用了net.msmq绑定…我还需要做什么吗?

    4 回复  |  直到 8 年前
        1
  •  5
  •   Maurice    15 年前

    您明确需要为非http激活配置iis。我不知道我头顶的所有细节,但基本上你需要使用appcmd来配置和启用net.msmq绑定激活。

    检查 this blogpost this screencast 应该告诉你所有的细节。

        2
  •  3
  •   B Labovitch    15 年前
        3
  •  2
  •   Kirk Broadhurst    13 年前

    我相信我在wcf上使用msmq绑定的问题主要是围绕iis的。

    我在使用windows xp/server 2003和iis 6时遇到了很多问题。

    在iis 7.5中使用windows7或server 2008,一切正常。

    一个更好的建议是将msmq作为托管服务/windows服务或独立应用程序运行,而不是在iis下运行。

        4
  •  0
  •   Chirag Bogra    8 年前

    一个选项是将其作为windows服务宿主。由于IIS不会自动激活消息放置在队列中的消息。
    另一个选项是创建一个简单的windows服务,该服务在指定的时间间隔后ping此服务。我们公布了同一服务的另一份合同, 不带isoneway=true (因为此操作不会与队列交互)。然后创建一个Windows服务,它在某个指定的时间间隔后对WCF服务URL进行打桩,这确保了SIS进程始终处于活动状态,WCF在队列上有消息时立即拾取消息。

    另外,请确保该服务也托管在http&net.msmq both上。

    我在一篇很好的文章中找到了使用net.msmq绑定使用msmq实现wcf的分步指南:
    Setup MSMQ with WCF using Net.Msmq binding