如何在不重新启动发布者的情况下取消订阅NServiceBus中的队列?

时间:2012-07-29 12:22:34

标签: msmq nservicebus publish-subscribe

好的,请原谅我,如果我的理解/术语有点奇怪 - 我仍然要掌握NSB和MSMQ之间的互动。

今天早些时候,我意外地使用生产配置文件在我的工作站上启动了我们的订户Web应用程序。这意味着我的工作站使用我们的生产发布者应用程我现在无法弄清楚如何让发布者停止向我的工作站发布消息,而不是重新启动发布者服务 - 由于它是一个生产系统,这将是不好的。

查看发布者主机系统上的队列管理器,我可以看到计算机管理下的专用队列 - >服务和应用 - >消息队列 - >传出队列:

DIRECT=OS:DYLAN_PC\private$\DylanApplicationInputQueue

但我看不到删除队列或删除订阅的任何机制。即使已经替换了本地用户应用程序的配置,当我立即启动本地用户时,来自我们的生产环境的消息也出现在队列中。这使得做任何有用的工作有点棘手。任何指向相关文档的指针都将非常受欢迎......

1 个答案:

答案 0 :(得分:1)

之前没有处理过NServiceBus,但是有些人通过文档表明,从您的客户端配置中删除订阅的原因是无关紧要的,因为您已经订阅了,因此发布者只是发送内容了你再次出现的那一刻!

根据您的设置,两个选项似乎可行:

  1. 返回发布商配置,尽早添加对Bus.Unsubscribe的调用。然后运行您的客户端一次,让它取消订阅,然后您可以返回使用适当的本地配置。
  2. 从实际存储的地方删除队列订阅,我认为这与队列本身是分开的。如果您使用的是SQL Server 2008,那么nservicebus deleting subscription record after inserting it?可能会有所帮助(嗯,做他们不希望发生的事情,即取消订阅)。这可能有点毛茸茸,这取决于NServiceBus在db中有什么依赖的东西,以及它重新读取v.s.的频率。假设它的缓存很好。