java - 如何在 GCP Pub Sub 中配置非持久消息?
问题描述
我有一个架构,其中有多个订阅 GCP 主题的 pod。
每个 pod 在启动时处理消息,但对接收未启动时错过的消息不感兴趣。
在 ActiveMQ 中,这是非持久消息,但我在 GCP 中看不到等效消息。我唯一想到的是消息的生命周期至少为 10 分钟。
这在 GCP 中是否可行,在哪里可以配置?
解决方案
Cloud Pub/Sub 中没有禁用存储的选项。你有两个选择。
按照您的建议,将消息保留持续时间设置为最短 10 分钟。这确实意味着您将在 pod 启动时收到长达十分钟的消息。这种方法的缺点是,如果您的 pod 出现问题并且它在处理消息方面落后了十分钟以上,那么即使它已启动,它也不会收到这些消息。
使用seek 操作并 seek 向前搜索到当前时间戳。当 pod 启动时,它可以做的第一件事是发出一个 Seek 命令,该命令将在提供的时间戳之前确认所有消息。请注意,此操作最终是一致的,因此当您最初启动订阅者时(或者,如果您使用推送,一旦您的端点启动),您可能仍会收到一些较旧的消息。另请记住,查找操作是一项管理操作,因此限制为每分钟 6,000 次操作(每秒 100 次操作)。因此,如果你有很多经常重启的 pod,你可能会遇到这个限制。
推荐阅读
- selenium - Selenium 无法识别 iframe 中的 swagger Web 元素
- c# - 如何显示正确的数据?
- python - 绘制频谱图但返回奇怪的结果
- c - 求 3 个骰子之和等于整数 k 的概率时出现分段错误
- swift - Swift Calendar.current.nextDate timeZone 问题
- lodash - 如何使用 Lodash 从嵌入数组的数组中获取所有 ID?
- openlayers - Openlayers5 隐藏功能
- javascript - 显示来自多部分/表单数据解析器的图像而不保存
- amazon-web-services - AWS Lightsail Linux 实例 public_dns_name
- python - 列表中的熊猫数据框,分别指定标题