如何使我的 Last Image Recovery Policy 主题在代理重启后仍然存在?

How do I make my Last Image Recovery Policy topic survive broker restarts?

我在 ActiveMQ 中使用 lastImageSubscriptionRecoveryPolicy 配置了一个主题。它按预期工作,因为代理保留发送到主题的最后一条消息,并且当新消费者订阅该主题时,它会收到最后一条消息:

  1. 生产者发布 N 条消息
  2. 消费者A订阅了该主题;收到 1 条消息
  3. 消费者B订阅了该主题;收到相同的 1 条消息

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

  1. 生产者发布 N 条消息
  2. 经纪人重新启动
  3. 消费者订阅主题;什么都没有收到

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

不,这是不可能的。如果您需要消息持久性,那么您要么需要使用队列,要么使用持久主题订阅以便在重启后保留消息。代理为主题提供了一些便利功能,例如恢复策略,但它们并不能真正替代基于队列的消息传递的更强大保证,因此如果您需要,则必须使用这些机制。