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

PubSub:是否可以获取迟到订阅者的最后一条消息?

  •  0
  • user1028741  · 技术社区  · 7 年前

    我将使用发布-订阅机制(AWS SNS/activeMQ)。

    我想知道是否有可能在过期时间(我的情况是5分钟)的主题上放置一条消息,以便订阅该主题的消费者即使在推送消息后订阅了该主题,也能获得该主题。

    例如,每隔5分钟,我会将一条消息“传感器测量了5个单位”推送到主题“传感器#3”。我希望该主题的新订阅者能够获取最后一条消息,而不必等待5分钟才能获取消息。

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

    没有使用者时,主题不会保留消息。您需要创建一个持久的主题订阅,以便存储消费者脱机时发送的消息。

    ActiveMQ有一个名为 retroactive consumers 如果旧消息仍在内存缓存中,则会尝试将旧消息传递到主题订阅,但无法保证会发生这种情况,因此不要指望它是100%可靠的。

        2
  •  0
  •   dennislloydjr    6 年前

    如果您使用的是SNS,那么可以向其订阅SQS队列。然后,您可以轮询队列并接收位于那里的任何消息,而不是直接订阅主题。不过,您应该考虑一些设计问题,例如SQS消息可能会无序传递或多次传递。