WCF/WebService, чтобы выступать в качестве слушателя для сообщения MQ?
Возможно, я лаю неправильное дерево, но у меня есть набор сервисов (WebAPI и WCF), которые используют WebSphere MQ для взаимодействия с другими системами.
Это работает без проблем - пока мне не нужно найти способ listening
для сообщений в одной из очередей.
Возможно ли это, или мне нужно спуститься по маршруту обслуживания Windows?
Ответы
Ответ 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>
Ответ 4
как подключиться к ibm websphere mq с помощью С#.net
Возможно, вы могли бы использовать приведенный выше ответ, и внутри этого потребительского приложения очереди создайте "Service Reference" для вашей службы WCF.