WCF / WebService для прослушивания сообщений MQ?

возможно, я лаю не на то дерево, но у меня есть набор служб (WebAPI и WCF), которые используют WebSphere MQ для взаимодействия с другими системами.

это работает без проблем-до тех пор, пока мне теперь не нужно найти способ listening для сообщений в одной из очередей.

возможно ли это, или мне нужно спуститься по маршруту службы windows?

4 ответов


ваша проблема может быть разбита на два различных элемента:

  1. как интегрировать MQ с поддерживаемым WCF транспортом
  2. как выставить конечную точку WCF над этим транспортом

чтобы решить первую проблему, вы должны посмотреть на мост MQ-MSMQ который поставляется с Host Integration Server до версии 2009 (не R2), что позволяет доставлять сообщения в очереди MQSeries, перенаправленные на локальные MSMQs в windows. Хотя эта функция устаревший это, вероятно, самый простой способ, если у вас есть лицензия MSDN.

другой способ решения этой проблемы-использовать BizTalk server, который поставляется с адаптером MQSeries, хотя, если вы не используете BizTalk в настоящее время на вашем предприятии, я бы избегал.

последний способ сделать это-программировать непосредственно против клиентских библиотек MQSERIES .NET или через XMS клиент.

Если вам удастся решить первый вопрос, а затем решить второй достаточно легко. Можно предоставить один способ операций Службы WCF над транспортом msmq с помощью netMsmqBinding (для WCF на обоих концах) или msmqIntegrationBinding для клиентов, использующих систему.Обмен сообщениями или собственные библиотеки msmq COM.

Это фактически действует как служба прослушивателя, с сообщениями, обрабатываемыми операцией службы.


вы можете написать службу Windows, которая постоянно вызывает MQ Get в очереди, и вызывает службу WCF для обработки сообщения. Или вы можете написать программу запуска (консольное приложение), которую MQ запустит для вас при поступлении сообщения, вызывающего службу WCF.


я мог бы быть просто лучше в гугле, чем вы, но я, кажется, нашел ответ тут.

Кажется, вы хотите загрузить конфигурацию привязки IBM в приложение.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>

Как подключиться к ibm websphere mq с помощью c#.net

возможно, вы могли бы использовать приведенный выше ответ и в этом приложении потребителя очереди создать "ссылку на службу" к вашей службе WCF.