我们将 TIBCO JMS 4.3.3 与用于 .net 2.0 的相同版本的 .Net TIBCO.EMS.dll 一起使用我们在队列中卡住消息时遇到了巨大的问题。我们正在使用从主题桥接的一个队列中的消息。我们的应用程序创建了多个具有长期会话的消费者——每个长期会话都有一个消费者。会话和消费者是在主线程中创建的,但消费者自己使用 Receive() 方法在单独的线程上使用带有超时的消息。每个消费者都有自己的工作线程。在每次成功接收时,我们都会在会话上调用 Commit,该会话创建了接收消息的消费者(抱歉措辞难看)。
问题是,当这个队列被大量填充时(由主题的桥接),许多消息被卡住 - 没有线程可以接收它们,我们可以清楚地看到它们正在浏览队列,如果我们重新启动应用程序,它们会被重新处理。我们还看到,当消息卡住时,如果在 TIBCO 控制台中运行“显示消费者”,则发送消息的数量变得不等于确认消息的数量。
我们完全迷失了——我们尝试为此队列启用和禁用预取。两种解决方案都不起作用。我们将接收超时时间从 1 秒增加到 1 分钟,当未决消息的数量越过某个边界时,仍然有消息卡住。
任何帮助、提示或建议将不胜感激。