edh*_*ose 4 google-cloud-pubsub google-cloud-dataflow
我很好奇在使用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已经处理过了吗?
| 归档时间: |
|
| 查看次数: |
874 次 |
| 最近记录: |