Чтение из очереди ошибок Oracle AQ

Я хочу записать размер очереди ошибок AQ в свой WebGUI.

Я, конечно, могу определить размер обычной очереди, создав соединение с фабрикой соединений. Однако это соединение не предназначено, чтобы получить подсказки об очереди ошибок, не так ли?

Если есть возможность злоупотреблять этим установленным сеансом (соединение с обычной очередью), чтобы захватить общий размер очереди ошибок, как мне это сделать? Я предпочитаю использовать EJB.

  • Если нет, мне нужно будет получить пользователя базы данных JMS из DBA, а затем прочитать размер очереди оттуда.
  • В качестве альтернативы, могу ли я сделать это с помощью MBeans?

Я предпочел бы пойти наоборот и использовать фабрику соединений (сеанс).

благодаря

2 ответа

Вы можете (если можете) сделать регулярный select в очереди исключений. Для очереди исключений в вашей базе данных всегда есть обычная таблица.

Информацию о очередях исключения AQ см. В документации Oracle AQ.


Если у вас нет доступа к DB-чтению и ограничено только потреблением сообщений в очереди (Oracle Advanced), вы будете холодно:

  1. получать сообщение из очереди
  2. увеличивать индекс с каждым сообщением, которое вы получаете из очереди
  3. откат после того, как индекс был увеличен.

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

Я ХОЧУ СДЕЛАТЬ ЭТО ЧИСТИТЬ: ЭТО РАБОТАЕТ ВОКРУГ! Если вам не предоставлен доступ для чтения в расширенную базу данных очередей! Кроме того, этот подход не работает хорошо, если очередь сложена или быстро расходуется. Номер размера является своевременным менее точным, чем при вызове SELECT COUNT(*) FROM MYADVANCEDQUEUE.

Я, конечно, НЕ рекомендую это, если у вас есть прямое решение.

licensed under cc by-sa 3.0 with attribution.