gpt4 book ai didi

google-cloud-dataflow - 如何确保 DataFlow 和 Cloud Pub Sub 的幂等性?

转载 作者:行者123 更新时间:2023-12-02 09:49:26 24 4
gpt4 key购买 nike

我很好奇在使用 Cloud DataFlow 和 PubSub 时确保幂等性的最佳方法是什么?

我们目前有一个在 MySQL 数据库中处理和存储记录的系统。我对使用 DataFlow 进行一些报告感到好奇,但想了解我需要做什么才能确保我不会意外地重复计算(或超过重复计数)相同的消息。

我的困惑有两个部分,首先确保我只发送一次消息,其次确保我只处理一次消息。

我的直觉如下:

每当我感兴趣的事件记录在我们的 MySQL 数据库中时,将其转换为 PubSub 消息并将其发布到 PubSub。假设成功,记录与 MySQL 记录一起返回的 PubSub id。这样,如果它有一个 PubSub id,我就知道我已经发送了它,并且不需要再次发送它。如果发布到 PubSub 失败,那么我知道我需要再次发送。一切都好。

但是,如果在 PubSub 写入成功后对 MySQL 的写入失败,我最终可能会再次向 pub sub 发布相同的消息,因此我需要在 DataFlow 端进行某些操作来处理这种情况以及 PubSub 发送消息的情况两次(根据 https://cloud.google.com/pubsub/subscriber#guarantees )。

处理这个问题的最佳方法是什么?在 AppEngine 或其他系统中,我会检查数据存储区,看看我创建的新记录是否存在,但我不确定如何使用 DataFlow 来做到这一点。有没有一种方法可以轻松实现过滤器来阻止消息被处理两次?或者 DataFlow 已经处理这个问题了吗?

最佳答案

Dataflow可以根据任意消息去重复消息attribute (由 idLabel 选择)位于接收方,如 Using Record IDs 中所述。从生产者的角度来看,您需要确保基于 MySQL 记录确定且唯一地填充属性。如果正确完成此操作,Dataflow 将仅处理每个逻辑记录一次。

关于google-cloud-dataflow - 如何确保 DataFlow 和 Cloud Pub Sub 的幂等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35398117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com