.NET中的activeMQ nms-如何检查临时队列是否已删除

本文关键字:队列 是否 删除 检查 activeMQ 中的 nms- 何检查 NET | 更新日期: 2023-09-27 18:25:13

我已经将ActiveMQ NMS与我的asp-mvc网站集成在一起,它在很大程度上运行得很好,但我最近的问题遇到了砖墙,我一辈子都不知道这是我缺失的东西,缺乏API支持,还是甚至是设计缺陷(可能是API中的缺陷)。。。

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

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

这完全有意义,因为临时队列在他们离开页面或关闭浏览器后就消失了。但这是杀死我的关键——在这个异常(我发现了)之后,整个消息系统都崩溃了!activemq只是在我重新启动它之前不再发送消息。这看起来非常疯狂,除非我在使用它的过程中错过了一些非常基本的东西。基本上我无法理解的是:

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

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

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

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

.NET中的activeMQ nms-如何检查临时队列是否已删除

我认为您遇到了最近已解决的NMS错误(请参阅https://issues.apache.org/jira/browse/AMQNET-377)。如果你更新到1.5.5或更高版本,你应该会有更好的结果。