我已经将ActiveMQ NMS与我的asp mvc网站集成在一起,它在大多数情况下工作得很好,但我遇到了最近一期的问题并且无法弄清楚我的生活是否是某种东西我缺少,缺乏API支持,甚至设计缺陷(可能在API中)......
我正在尝试做一件简单的事情 - 我需要在尝试向其发送消息之前检查是否已删除临时队列。一旦客户端断开连接,关闭浏览器等,就会删除临时队列,这很好,因为这就是我使用临时队列的原因。但是,我将目的地存储在服务器上,这样我就可以将某些消息发送到它们仍然连接的某些目的地。一切都运行良好,直到客户端离开/关闭浏览器,这意味着ActiveMQ将删除临时队列,我需要停止发送消息到该临时队列,直到他们重新连接,因为如果我尝试我得到这个例外:
javax.jms.JMSException:目标临时队列:// ID:WIN-HP6U1SD1FB4-29628-1329687650640-0:1:85不存在。
这完全有道理,因为临时队列离开了页面或关闭了浏览器。但这是踢我的杀手 - 在这个异常(我抓到)之后整个消息系统都崩溃了! activemq在重新启动之前不再发送消息。这似乎绝对疯狂,除非我错过了一些非常基本的东西,我如何使用它。基本上我无法弄清楚的是:
1)为什么activeMQ在尝试将消息发送到不存在的临时队列时会发生故障?为什么不能抛出异常并继续?
2)很好,我可以使用#1,但在发送之前如何检查临时目标队列是否存在? API中没有任何内容似乎支持这一点。
3)如果#2出于某种疯狂的原因是不可能的,我如何从这个导致整个消息队列系统的jms异常中恢复?
我发布了代码,但不确定这会有所帮助。
答案 0 :(得分:1)
我认为您遇到了最近已解决的NMS错误(请参阅https://issues.apache.org/jira/browse/AMQNET-377)。如果您更新到1.5.5或更高版本,则应该会有更好的结果。