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