0

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

今天早些时候,我不小心使用生产配置文件在我的工作站上启动了我们的订阅者 Web 应用程序。这意味着我的工作站在我们的生产发布者应用程序中注册了自己。我现在不知道如何让发布者停止向我的工作站发布消息,除非重新启动发布者服务——这会很糟糕,因为它是一个生产系统。

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

DIRECT=OS:DYLAN_PC\private$\DylanApplicationInputQueue

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

4

1 回答 1

1

以前我自己没有处理过 NServiceBus,但是一些对文档的挖掘表明,从客户端配置中删除订阅的原因是无关紧要的,因为你已经订阅了,所以发布者只是在你转身的那一刻发送东西又起来了!

根据您的设置,两个选项似乎可能有效:

  1. 返回发布者配置,尽早添加对 Bus.Unsubscribe 的调用。然后运行您的客户端一次,让它取消订阅,然后您可以返回使用正确的本地配置。
  2. 从实际存储的任何地方删除队列订阅,我认为它与队列本身是分开的。如果您使用的是 SQL Server 2008,nservicebus 插入后是否删除订阅记录?可能会有所帮助(好吧,做他们不想发生的事情,即取消订阅)。这可能有点麻烦,具体取决于 NServiceBus 在数据库中的依赖内容,以及它重新读取的频率与假设它的缓存是好的但是。
于 2012-07-29T13:37:50.623 回答