如何在 GCP Pub Sub 中配置非持久消息?

Posted

技术标签:

【中文标题】如何在 GCP Pub Sub 中配置非持久消息?【英文标题】:How to configure Non Persistent messages in GCP Pub Sub? 【发布时间】:2021-11-08 02:53:15 【问题描述】:

我的架构包含多个订阅 GCP 主题的 pod。

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

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

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

【问题讨论】:

您使用推送订阅还是拉取订阅? 【参考方案1】:

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

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

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

【讨论】:

以上是关于如何在 GCP Pub Sub 中配置非持久消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何计算从外部服务读取 gcp Pub/Sub 消息的成本

确认后 GCP 消息保留在 Pub/Sub 中

如何在云 pub/sub 上获取订阅的消息?

GCP Pub/Sub 消息发送到创建主题之前存在的订阅

GCP Pub/Sub - 如何从 BQ 计划查询中检索状态

GCP Pub Sub:批量处理消息