Я пытаюсь диагностировать и устранить возможную экологическую проблему. У нас есть dev, SI и производственные серверы, и они были настроены в течение нескольких лет. Одна из сред перестала работать для определенной очереди JBM, и я до сих пор не могу понять, почему.
То, что я вижу через консоль JMX, - это то, что сообщения «застряли» в состоянии доставки. MessageCount и DeliveringCount увеличиваются каждый раз, когда сообщение отправляется через очередь. OnMessage () объекта Consumer вызывается и выводит сообщения отладки в журнал log4j, однако я не думаю, что он когда-либо завершает запрос.
Это постоянная настройка JBM. Перезапуск сервера JBoss не помогает. Очистка или даже удаление таблиц JBM_ * не помогает.
Записи jbm_msg_ref имеют нулевые транзакции_id и состояние 'C', что, по-видимому, было переведено в это состояние подготовленным оператором "ROLLBACK_MESSAGE_REF2" из используемого нами файла oracle-persistence-service.xml.
Значение MaxPoolSize для потребителя MDB равно 15, и это также максимальный объем сообщений, полученных экземплярами потребителя. После 15 кажется, что очередь «заполняется», и больше нет доступных MBeans-потребителей для приема сообщений.
Я ищу идеи или предложения по диагностике и устранению проблемы. Я гуглил и пробовал что-то в течение нескольких дней с небольшими результатами. Есть много билетов JIRA на эту довольно старую версию JBM, но другие экземпляры той же самой установки работают нормально, поэтому я подозреваю, что есть какая-то проблема с сетью, состоянием гонки или env в этой комбинации один сервер / БД.
JBoss Remoting 4.3.0.GA
JBoss Messaging 1.4.0.SP3
JBoss 4.3.0.GA
Спасибо!