WCF / WebService для прослушивания сообщений MQ?
возможно, я лаю не на то дерево, но у меня есть набор служб (WebAPI и WCF), которые используют WebSphere MQ для взаимодействия с другими системами.
это работает без проблем-до тех пор, пока мне теперь не нужно найти способ listening
для сообщений в одной из очередей.
возможно ли это, или мне нужно спуститься по маршруту службы windows?
4 ответов
ваша проблема может быть разбита на два различных элемента:
- как интегрировать MQ с поддерживаемым WCF транспортом
- как выставить конечную точку 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.