Лучший способ проверить очередь IBM WebSphere MQ 7.0 на входящие сообщения - PullRequest
3 голосов
/ 15 ноября 2011

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

Я использую WebSphere MQ 7.0 и реализовал Java-приложение для проверки очереди MQ навходящие сообщения.

Входящая очередь открывается с помощью следующего кода:

int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE;
MQQueue incomingQueue = 
          qManager.accessQueue(qName, openOptions, null, null, null);

Теперь задача состоит в том, чтобы проверять в режиме реального времени, когда новые сообщения появляются в incomingQueue, и обрабатывать их.

Я постоянно проверяю глубину очереди с помощью вызова incomingQueue.getCurrentDepth() в цикле while и проверяю, больше ли он нуля, тогда я получаю новые сообщения.

Это работает, но я считаю, что это не такхороший подход.

Как лучше всего получать уведомления при появлении нового входящего сообщения в очереди MQ?

Спасибо.

1 Ответ

2 голосов
/ 15 ноября 2011

Просто вызовите метод queue.Get (msg). Это блокирующий вызов, который будет возвращаться только при наличии сообщения в очереди.

Если вышеприведенное не подходит, так как это блокирующий вызов, вы можете посмотреть на WMQ JMS, который предоставляет приемник сообщений. Слушатель сообщений используется для получения сообщений по методу обратного вызова, в то время как основной поток может продолжать выполнять другую работу.

Есть хорошие образцы, которые идут с MQ. Вы можете найти их в (в Windows) \ tools \ jms \ samples и tools \ wmqjava \ samples.

...