也许我正在咆哮错误的树 - 但我有一组使用WebSphere MQ与其他系统交互的服务(WebAPI和WCF)。
这没有问题 - 直到我现在需要为其中一个队列的消息找到listening
的方式。
这是否可行,或者我是否需要沿着Windows服务路线走下去?
答案 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)
您的问题可分为两个不同的元素:
要解决第一个问题,您应该查看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服务创建“服务引用”。