这是 Oracle 11.2.0.3。
我们在使用 Oracle 的 JMS 而不是 OracleAQ 时遇到了问题。这工作正常,除了我们开始注意到队列被填满 1000 条消息,然后随着时间的推移数百万条消息。其中一些处于 PROCESSED 状态,但大多数处于就绪状态。我们将此行为追溯到该主题的“僵尸”或死亡订阅者。当 Java 进程终止并且没有机会注销自己时,它会将订阅者记录留在队列中,而 ORacle 似乎没有检测到它已经死亡。以至于 MONTHS 之后,发送到我们的多订阅者队列的新消息将乘以订阅者的数量,它认为这比实际要高得多。(当我们达到最大订阅者限制时,我们首先注意到了这一点。)
我们已经运行了 qmon 进程——我什至尝试增加最小进程数以使其无效。只要队列中没有死订阅者,队列清理就会非常顺利。
任何人都看到过这个,并希望找到一个解决方案?