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

时间:2015-05-10 11:05:06

标签: wcf asp.net-web-api listener ibm-mq

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

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

这是否可行,或者我是否需要沿着Windows服务路线走下去?

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

似乎您想在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>

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

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

答案 2 :(得分:1)

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

  1. 如何将MQ与WCF支持的传输集成
  2. 如何通过此传输公开WCF端点
  3. 要解决第一个问题,您应该查看Host Integration Server随版本2009(而不是R2)附带的MQ-MSMQ bridge,它允许您将传递到MQSeries队列的消息转发到Windows中的本地MSMQ 。虽然此功能为deprecated,但如果您拥有MSDN许可证,这可能是最简单的方法。

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

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

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

    此实际作为侦听器服务,消息由服务操作处理。

答案 3 :(得分:0)

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

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