代码之家  ›  专栏  ›  技术社区  ›  arosca

如何使上一个映像恢复策略主题在代理重新启动后幸存?

  •  0
  • arosca  · 技术社区  · 6 年前

    我在ActiveMQ中用lastImageSubscriptionRecoveryPolicy配置了一个主题。它的工作正如预期的那样,因为代理程序会将最后一条发送到主题的消息持久化,当新的使用者订阅该主题时,它会收到最后一条消息:

    1. 生产者发布n条消息
    2. 使用者A订阅主题;收到1条消息
    3. 使用者B订阅主题;收到相同的1条消息

    但是,当我重新启动代理时,消息会丢失。这是事件的顺序:

    1. 生产者发布n条消息
    2. 代理已重新启动
    3. 消费者订阅主题;未收到任何内容

    是否可以启用最后一条消息(最后一个映像)的持久性,以便即使在代理重新启动时也将其持久化?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Tim Bish    6 年前

    不,这是不可能的。如果您需要消息持久性,那么您要么需要使用队列,要么使用持久主题订阅,以便在重新启动后保留消息。对于诸如恢复策略之类的主题,代理具有一些方便的特性,但它们并不能真正代替基于队列的消息传递所具有的更强的保证,因此如果需要,则必须使用这些机制。