Это Oracle 11.2.0.3.Почему OracleAQ оставляет мертвых подписчиков в очереди?
У нас возникла проблема, когда мы используем JMS Oracle для OracleAQ. Это отлично работает, за исключением того, что мы начали замечать, что очередь заполняется 1000, а затем миллионы сообщений с течением времени. Некоторые из них находятся в состоянии PROCESSED, но большинство из них ГОТОВ. Мы проследили это поведение до «зомби» или мертвых подписчиков на эту тему. Когда процесс Java завершается и не получает возможности отменить регистрацию, он оставляет запись подписчика в очереди, и ORacle, похоже, не обнаруживает, что он мертв. Настолько, что MONTHS позже, новое сообщение, отправленное в нашу очередь с несколькими абонентами, затем будет умножаться на число подписчиков, которое, по его мнению, намного выше, чем на самом деле. (Мы впервые заметили это, когда достигли максимального абонентского лимита.)
У нас запущены процессы qmon - я даже попытался увеличить минимальное количество процессов без эффекта. Очистка очереди происходит очень хорошо, если в очереди нет мертвых подписчиков.
Кто-нибудь это видит раньше, и, надеюсь, нашел решение?
Я столкнулся с той же проблемой и попытался ее решить. Если я найду решение, разместите его здесь для справки другого пользователя. – gyan