我们使用的是TIBCO JMS 4.3.3,与.NET 2.0的.NET TIBCO.EMS.DLL相同的版本,我们在排队中遇到的粘贴消息遇到了巨大问题。我们正在消费一个队列中的消息,该消息是从该主题桥接的。我们的应用程序创建了多个生活会议的多个消费者 - 每个长期的会议都有一个消费者。会话和消费者是在主线程中创建的,但是消费者本身正在使用Recect()方法在单独的线程上使用Recect()方法。每个消费者都有自己的线程。在每个成功接收的情况下,我们都在会议上呼叫提交,该会话创建了收到消息的消费者(对不起,丑陋的措辞)。

问题是,当该队列被大量填充(由主题的桥梁)填充时,许多消息被卡住了 - 没有任何线程可以接收它们,我们可以清楚地看到它们浏览了队列,如果我们重新启动我们的应用程序,它们就会重新处理。另外,我们看到,当消息卡住时,如果在TIBCO控制台中运行“显示消费者”,则发送消息的数量与已确认消息的数量不等。

我们绝对迷路了 - 我们尝试为此队列启用和禁用预取。解决方案都没有起作用。我们将接收超时从1秒增加到1分钟,当挂起消息越过一些边界时,消息仍被卡住。

任何帮助,提示或建议将不胜感激。

有帮助吗?

解决方案

最后,我们发现4.4.3版的TIBCO EMS中有一个错误,导致某些客户连接冻结。它固定在5.x中

其他提示

在您的线程代码中,作为队列接收器的某个位置似乎缺少确认 commit。我建议您查看消费者代码..以及可能的多线程。我认为所有线程都在听独特的队列。

-hb

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top