WCF/WebService是否充当MQ消息的侦听器?

WCF/WebService是否充当MQ消息的侦听器?,wcf,asp.net-web-api,listener,ibm-mq,Wcf,Asp.net Web Api,Listener,Ibm Mq,也许我找错了方向——但我有一组服务(WebAPI和WCF),它们使用WebSphere MQ与其他系统交互 这是毫无问题的-直到现在我需要找到一种方法来侦听其中一个队列上的消息 这是可能的,还是我需要使用windows服务路径?您可以编写一个windows服务,该服务在队列上不断调用MQ Get,并调用WCF服务来处理消息。或者您可以编写一个触发程序(控制台应用程序),MQ将在消息到达时为您启动该程序,以调用WCF服务。我可能比您更擅长谷歌搜索,但我似乎已经找到了 似乎要在app.config中

也许我找错了方向——但我有一组服务(WebAPI和WCF),它们使用WebSphere MQ与其他系统交互

这是毫无问题的-直到现在我需要找到一种方法来
侦听其中一个队列上的消息


这是可能的,还是我需要使用windows服务路径?

您可以编写一个windows服务,该服务在队列上不断调用MQ Get,并调用WCF服务来处理消息。或者您可以编写一个触发程序(控制台应用程序),MQ将在消息到达时为您启动该程序,以调用WCF服务。

我可能比您更擅长谷歌搜索,但我似乎已经找到了

似乎要在app.config中加载IBM绑定配置

<extensions>
  <bindingElementExtensions>
    <add name="IBM.XMS.WCF.SoapJmsIbmTransportChannel" 
           type="IBM.XMS.WCF.SoapJmsIbmTransportBindingElementConfig, IBM.XMS.WCF, Version=7.5.0.0, Culture=neutral, PublicKeyToken=8c7c0be90afcd8ba"/>
  </bindingElementExtensions>
</extensions>

然后可以添加WebSphereWCF绑定配置

<bindings>
  <customBinding>
    <binding name="CustomBinding_WMQ">
      <textMessageEncoding messageVersion="Soap11" />
      <IBM.XMS.WCF.SoapJmsIbmTransportChannel />
    </binding>
  </customBinding>
</bindings>

您的问题可以分为两个不同的要素:

  • 如何将MQ与支持WCF的传输集成
  • 如何在此传输上公开WCF终结点
  • 要解决第一个问题,您应该查看主机集成服务器在版本2009(而不是R2)之前附带的,它允许您将传递到MQSeries队列的消息转发到windows中的本地MSMQ。尽管此功能非常有用,但如果您拥有MSDN许可证,这可能是最简单的方法

    解决此问题的另一种方法是使用随MQSeries适配器提供的BizTalk server,但除非您当前在企业中使用BizTalk,否则我会避免使用

    您可以这样做的最后一种方法是直接针对MQSeries.NET客户端库或通过客户端进行编程

    如果你设法解决了第一个问题,那么解决第二个问题就足够容易了。您可以使用netMsmqBinding(用于两端的WCF)或msmqIntegrationBinding(用于使用System.Messaging或本机msmq COM库的客户端),通过msmq传输公开单向WCF服务操作

    这实际上是一个侦听器服务,消息由服务操作处理。


    也许您可以使用上述答案,并在该队列消费者应用程序中创建“服务引用”到您的WCF服务。

    此链接将帮助您:@Shashi-我在文档中看不到任何关于如何将WebSphere end设置为WCF服务的内容?此链接描述了MQ WCF支持的两个托管选项-自托管和Windows服务。是的……根据IBM规范,它做得非常糟糕,而且没有考虑到这一点实际使用!我正在寻找一个现实世界中的答案。@BlueChippy你找到解决方案了吗?谢谢-有一件事我还没有找到,那就是我需要在Websphere方面做什么?e、 g.我如何使它看起来像一个服务?经历了这一点,它与我试图做的相反!这允许我使用JMS向MQ写入,然后读取回复。我想要的是侦听另一个应用程序的队列来编写消息,然后使用WCF服务来处理消息