首页 > 解决方案 > 如何在 GCP Pub Sub 中配置非持久消息?

问题描述

我有一个架构,其中有多个订阅 GCP 主题的 pod。

每个 pod 在启动时处理消息,但对接收未启动时错过的消息不感兴趣。

在 ActiveMQ 中,这是非持久消息,但我在 GCP 中看不到等效消息。我唯一想到的是消息的生命周期至少为 10 分钟。

这在 GCP 中是否可行,在哪里可以配置?

标签: javaspringkubernetesgoogle-cloud-pubsubjms-topic

解决方案


Cloud Pub/Sub 中没有禁用存储的选项。你有两个选择。

  1. 按照您的建议,将消息保留持续时间设置为最短 10 分钟。这确实意味着您将在 pod 启动时收到长达十分钟的消息。这种方法的缺点是,如果您的 pod 出现问题并且它在处理消息方面落后了十分钟以上,那么即使它已启动,它也不会收到这些消息。

  2. 使用seek 操作并 seek 向前搜索到当前时间戳。当 pod 启动时,它可以做的第一件事是发出一个 Seek 命令,该命令将在提供的时间戳之前确认所有消息。请注意,此操作最终是一致的,因此当您最初启动订阅者时(或者,如果您使用推送,一旦您的端点启动),您可能仍会收到一些较旧的消息。另请记住,查找操作是一项管理操作,因此限制为每分钟 6,000 次操作(每秒 100 次操作)。因此,如果你有很多经常重启的 pod,你可能会遇到这个限制。


推荐阅读