publish-subscribe - apache beam PubSub 在普通 pubsub 客户端库中读取 withIdAttribute 的替代方案
问题描述
在 beam sdk 中,pubusbIO read 提供了一个使用消息 id 来删除重复消息的选项:https ://beam.apache.org/releases/javadoc/2.23.0/org/apache/beam/sdk/io/gcp/pubsub/PubsubIO .Read.html#withIdAttribute-java.lang.String-
当我检查 Pubsub 客户端库(用于 java 和 python)时,我没有看到使用消息 ID 来删除重复消息的类似选项。
所以我的问题是:
- pubsub 客户端库(python 和 java)是否具有类似的功能?也许我因为命名不同而错过了它。
- 如果他们不这样做,你是如何处理这种情况的?我只是好奇它是如何作为灵感解决的。因为我正在考虑使用缓存来存储最近的消息 ID,以便在我的客户端应用程序中进行重复数据删除。
谢谢你。
解决方案
PubSub 客户端库中没有相同的功能。运行 Beam 管道的 Cloud Dataflow 保留最新 messageIds 的缓存(我不知道有多少和多少时间,但只有几分钟)。这是一个 Beam 功能。
当您使用 PubSub 时,由于 PubSub 保证仅at-least-one-delivery,建议您的进程具有幂等性
通常,容纳多次传递要求您的订阅者在处理消息时是幂等的。
推荐阅读
- php - Laravel 8:无法更改 laravel 身份验证重定向
- r - Tibbles vs 矩阵
- machine-learning - 如何运行多个机器学习推理模型?
- reactjs - Axios 拦截器
- spring-boot - Spring Cloud Kinesis Binder Consumer Group Settings 避免重复记录处理
- html - 如何在 div 中使用和插入 SVG 文件
- nlp - 使用 GPT3 构建一个模型来回答来自数据集的问题
- linux - 在启用 TCP 保持活动选项时获取无效参数作为失败原因?
- google-apps-script - 从 Google Apps Script Web 应用程序获取 JSON 从另一个网络应用程序获取 JSON,无需匿名访问
- python - Django REST 序列化程序,如何添加额外的字段并设置它