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

WCF / WebService to act as Listener for MQ Message?

也许我找错了树 - 但我有一组使用 WebSphere MQ 与其他系统交互的服务(WebAPI 和 WCF)。

这没有问题 - 直到我现在需要为其中一个队列中的消息找到一种 listening 的方法。

这有可能吗,还是我需要走 windows 服务路线?

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

我可能比你更擅长谷歌搜索,但我似乎找到了 the answer here

您似乎想要加载 IBM 绑定配置 app.config

<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>

然后您可以添加 WebSphere WCF 绑定配置。

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

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

  1. 如何将 MQ 与 WCF 支持的传输集成
  2. 如何通过此传输公开 WCF 端点

要解决第一个问题,您应该查看 MQ-MSMQ bridge which ships with Host Integration Server up to version 2009 (not R2), which allows you to have messages delivered to MQSeries queues forwarded to local MSMQs in windows. Although this feature is deprecated 如果您拥有 MSDN 许可证,这可能是最简单的方法。

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

最后一种方法是直接针对 MQSeries .NET 客户端库或通过 XMS 客户端进行编程。

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

这实际上充当侦听器服务,消息由服务操作处理。

how to get connect with ibm websphere mq by using c#.net

也许您可以使用上述答案并在该队列消费者应用程序中为您的 WCF 服务创建一个 "Service Reference"。