我正在使用.NET RabbitMQ Client
库。我想开发一个消息传递系统。
为此,我实现了RabbitMQ的所有必要方法。此外,我已经开发了dispose()
来删除队列。我在FormClosing
事件中调用此方法,因此当用户通过单击关闭按钮关闭应用程序时将触发此方法,并且将删除逻辑队列。到目前为止,所有代码都运行良好。
但我的问题是
我在关闭应用程序时无法删除队列 没有点击关闭按钮(让我们说关闭申请 从任务管理器或使用taskkill命令或任何命令提示符 异常原因)因为这个dispose()不会被触发。此时,在我手动从管理门户删除队列之前,不会删除队列。
所以我的问题是,
我怎么知道应用程序已关闭以及该孤立队列 可以删除吗?
答案 0 :(得分:3)
RabbitMQ公开了一个基于REST的管理API,使您能够处理队列创建/删除。
你可以做的是让你的应用程序在启动时查询管理API,看看是否因为之前的意外关闭而遗弃了任何队列,或者你可能有一个完全不同的服务负责这样做(这是一个设计选择)。
查询管理APImanagementClient.DeleteQueue(queue);
您可以找到完整的文档here。
修改强>
在做了一些阅读之后,或许是排他或自动删除队列就足够了吗?
独占(仅由一个连接使用,当该连接关闭时将删除队列)
自动删除(当最后一个消费者取消订阅时删除队列)