Подтвердить что ты не робот

WCF/WebService, чтобы выступать в качестве слушателя для сообщения MQ?

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

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

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

4b9b3361

Ответ 1

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

  • Как интегрировать MQ с транспортом, поддерживаемым WCF
  • Как вывести конечную точку WCF над этим транспортом

Для решения первой проблемы вы должны посмотреть на MQ-MSMQ bridge, который поставляется с сервером интеграции хостинга до версии 2009 (не R2), что позволяет отправлять сообщения в очереди MQSeries, перенаправленные на локальные MSMQ в Windows. Хотя эта функция устарела, это, вероятно, самый простой способ, если у вас есть лицензия MSDN.

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

Последний способ, которым вы могли бы сделать это, - напрямую запрограммировать программу на клиентские библиотеки MQSeries.NET или через XMS клиент.

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

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

Ответ 2

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

Ответ 3

Я мог бы быть лучше в googling, чем вы, но я, кажется, нашел ответ здесь.

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