Google cloud dataflow 排出数据流作业,然后立即启动另一个作业,导致消息重复

Google cloud dataflow 排出数据流作业,然后立即启动另一个作业,导致消息重复,google-cloud-dataflow,google-cloud-pubsub,Google Cloud Dataflow,Google Cloud Pubsub,我有一个数据流作业,订阅来自PubSub的消息: p.apply("pubsub-topic-read", PubsubIO.readMessagesWithAttributes() .fromSubscription(options.getPubSubSubscriptionName()).withIdAttribute("uuid")) 我在文档中看到,不保证不存在重复,Beam建议将与IDAttribute一起使用 直到我耗尽一个现有作业,等待它完成并重新启动另一个作业,然后我看到数

我有一个数据流作业,订阅来自PubSub的消息:

p.apply("pubsub-topic-read", PubsubIO.readMessagesWithAttributes()


.fromSubscription(options.getPubSubSubscriptionName()).withIdAttribute("uuid"))
我在文档中看到,不保证不存在重复,Beam建议将
与IDAttribute一起使用

直到我耗尽一个现有作业,等待它完成并重新启动另一个作业,然后我看到数以百万计的重复BigQuery记录(我的作业将PubSub消息写入BigQuery),这一切都会正常工作


你知道我做错了什么吗?

我认为你应该使用排水管,而不是使用排水管来停止管道并启动新管道。在后一种方法中,两个管道之间不共享状态,因此数据流无法识别已经从PubSub传递的消息。使用更新功能,您应该能够继续您的管道,而无需重复消息