使用2.2 Dataflow SDK是否可以使用Pubsub自动应用的messageId字段实现一次性交付?或者这甚至可能是默认行为?
PubsubIO.Read.withIdAttribute
似乎通常可能这样,但我无法控制已发布的消息,所以我希望使用messageId字段。
在旧的1.x docs中声明:
此外,您可以完成一次Pub / Sub消息流的处理,因为PubsubIO根据自定义消息标识符或Pub / Sub分配的标识符对消息进行重复数据删除。
最后一部分有一些暗示,读取的默认行为可能固有地使用messageId进行一次交付。
答案 0 :(得分:2)
是的,1.x和2.2在这方面都是相同的。两者都提供了一次性处理语义。 Pubsub消息ID用于两者。
请注意,它恰好一次“处理”和完全一次“交付”并不总是相同。交付通常意味着汇入外部系统,这超出了Dataflow管道的范围。当管道中有重试时,接收器可能具有重复写入。