Опрос очереди сообщений IBM Websphere

Требование: Создайте приложение на основе .NET, которое может считывать сообщения через регулярные промежутки времени из очереди сообщений IBM Websphere и сохранять эти сообщения в базе данных.

Мое решение. Я создал сервисное приложение Windows, которое с определенным интервалом опрашивает очередь сообщений и обрабатывает данные.

Проблема с опросом заключается в том, что процесс приложения задерживается на интервал опроса. Я не могу установить слишком короткий интервал, так как не знаю, сколько данных будет в очереди сообщений и сколько времени займет их обработка.

Вопрос. Как лучше обрабатывать данные из очереди сообщений WebSphere с помощью .NET? Как я смогу обрабатывать данные, как только они поступят в очередь сообщений?


person fahmi    schedule 08.07.2015    source источник
comment
Почему приложение не следует обычному шаблону GET с ожиданием?   -  person T.Rob    schedule 08.07.2015
comment
@T.Rob Не уверен, что ты имел в виду. В настоящее время приложение ожидает 30 секунд, а затем получает и обрабатывает сообщение от MQ.   -  person fahmi    schedule 09.07.2015
comment
В вопросе говорится, что процесс приложения задерживается на интервал опроса. Обычно приложение выдает GET и указывает интервал WAIT. Когда приходит сообщение, задержки нет, потому что приложение ожидает его. Если срок действия WAIT истекает, приложение получает RC=2033 и возвращается к другим GET и WAIT. Однако, если приложение выдает GET без WAIT, а затем засыпает на 30 секунд, это означает большую задержку, пока приложение находится в спящем режиме.   -  person T.Rob    schedule 09.07.2015


Ответы (2)


Что вам нужно, так это асинхронный обмен сообщениями. Это работает путем регистрации обратного вызова, который затем вызывается клиентом MQ, когда сообщение становится доступным. Взгляните на страницу Центра знаний:

http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q023050_.htm

person Tim McCormick    schedule 08.07.2015

Вам нужно использовать IBM Message Service Client for .NET (a.k.a. XMS .NET). Этот клиент предоставляет функцию прослушивания сообщений (в основном обратный вызов, как упоминал Тим выше). Прослушиватель сообщений будет вызываться, когда сообщение, соответствующее критериям выбора потребителя, поступит в очередь.

Если вы используете MQ версии 7.1 или выше, XMS .NET устанавливается вместе с клиентом MQ. Если у вас более ранняя версия, вам необходимо загрузить IA9H. пакет поддержки. Вам понадобится ссылка на сборку IBM.XMS в вашем приложении. Вместе с продуктом поставляются образцы для демонстрации ряда функций, включая прослушиватель сообщений.

Дополнительные сведения см. в образце SimpleAsyncConsumer.cs, поставляемом с продуктом.

person Shashi    schedule 11.07.2015