如何避免重复的 PubSub 交付?

How To avoid duplicate PubSub delivery?

我正在开发一个每天将获得 4000 万条记录的应用程序,那么 PubSub 是否可以处理它?我还看到,在某些情况下,PubSub 会发送重复的消息,我们如何避免这种情况?

一天 4000 万条记录 (~460/s) 是 Pub/Sub 可行的定义,是的。该服务旨在根据您的负载水平扩展至每秒数十 GB。 Pub/Sub 默认是 at-least-once 送货服务,这意味着重复是可能的。 public 预览中目前有一个 exactly once feature,它可以让人们获得更强的保证,包括:

  1. 一次只能发送一个消息。
  2. 成功响应Ack调用意味着消息保证不会被重新投递。

这意味着如果您在截止日期前不确认消息,消息将被重新发送,因此这并不意味着您可以完全避免重复。如果你只需要一次处理,那么Dataflow can be a good choice.