0

我已经将 ActiveMQ NMS 与我的 asp mvc 网站集成在一起,它在大多数情况下都运行良好,但是我最近的问题遇到了障碍,我一生都无法弄清楚这是否是我的问题缺少、缺乏 API 支持,甚至是设计缺陷(可能在 API 中)......

我正在尝试做一件简单的事情 - 在尝试向其发送消息之前,我需要检查是否已删除临时队列。一旦客户端断开连接、关闭浏览器等,临时队列就会被删除,这很好,因为这就是我使用临时队列的原因。但是,我将目的地存储在服务器上,因此我可以在它们仍然连接时将某些消息发送到某些目的地。在客户端离开/关闭浏览器之前一切正常,这意味着 ActiveMQ 将删除临时队列,我需要停止向该临时队列发送消息,直到它们重新连接,因为如果我尝试我会得到这个异常:

javax.jms.JMSException :目标 temp-queue://ID:WIN-HP6U1SD1FB4-29628-1329687650640-0:1:85 不存在。

这完全有道理,因为临时队列已经消失了,因为他们离开了页面或关闭了浏览器。但这是让我丧命的问题——在这个异常(我捕捉到)之后,整个消息传递系统都崩溃了!在我重新启动它之前,activemq 不再发送消息。这似乎非常疯狂,除非我在使用它时遗漏了一些非常基本的东西。基本上我想不通的是:

1)为什么activeMQ在尝试向不存在的临时队列dest发送消息时会关闭?为什么它不能抛出异常并继续?

2) 很好,我可以使用#1,但是如何在发送之前检查临时目标队列是否存在?API 中似乎没有任何内容支持这一点。

3)如果#2由于某种疯狂的原因是不可能的,我如何从这个导致整个消息队列系统崩溃的jms异常中恢复?

我会发布代码,但不确定这会有所帮助。

4

1 回答 1

1

I think you've run into an NMS bug that has been resolved recently (see https://issues.apache.org/jira/browse/AMQNET-377). If you update to version 1.5.5 or later, you should have better results.

于 2012-05-17T06:38:25.943 回答