【问题标题】:How to deal with stale persisted subscriptions?如何处理过时的持久订阅?
【发布时间】:2012-02-29 14:35:23
【问题描述】:

假设我部署了一个订阅事件 A、B 和 C 的 NSB 端点。 6 个月后,1.1 版本的端点添加了事件 D 的处理程序,但删除了事件 B 的处理程序。删除事件 B 的持久订阅记录的合理过程是什么?我认为这没有自动发生的方法,我的选择是:

  1. 删除订阅表的全部内容并重新启动所有端点。
  2. 根据我对增量的了解有选择地删除
  3. 有一些关闭模式,在这种模式下,我的订阅者会在其所有消息类型上调用取消订阅(因此会在上升过程中从一个干净的状态开始)

有没有人实施过这些策略,还是我错过了一些替代方案?

【问题讨论】:

    标签: persistence upgrade nservicebus publish-subscribe


    【解决方案1】:

    最好的解决方案可能是选项 1。其中涉及的操作开销会相当小:

    1. 关闭发布者主机
    2. 清除订阅数据库
    3. 退回所有订阅者
    4. 启动发布者主机

    选项 3 也是可能的,但会涉及从每个订户发出取消订阅呼叫,这是 IMO 更高的开销(如果 unscubscribe 呼叫尚未实现,则需要重新部署,然后关闭以触发呼叫)。

    选项 2 似乎有点老套,但成本最低,因为您可以针对发布者 db 运行一条 sql 语句,并且 bob 是您母亲的兄弟。

    我会推荐选项 1。

    【讨论】:

      猜你喜欢
      • 2014-07-05
      • 1970-01-01
      • 2015-08-24
      • 2015-08-11
      • 2016-01-14
      • 2013-12-17
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      相关资源
      最近更新 更多