Notifications 带有发布/订阅和文档的Google云存储通知
在关于GCP存储和发布/订阅通知的文档中,我发现这句话并不十分清楚: Cloud Pub/Sub还向收件人提供至少一次传递[这很清楚], 这意味着您可以接收多条消息,其中包含多个 ID,表示相同的云存储事件[为什么?] 有人能更好地解释这种行为吗 谢谢 至少一次传递意味着服务必须收到收件人的确认,以确保收到邮件。在这种情况下,我们需要某种超时时间来重新发送消息。由于网络延迟或数据包丢失等原因,可能会让收件人发送确认,但发件人在超时之前不会收到确认,因此发件人将再次发送消息 这是网络通信和分布式系统的一个常见问题,有不同类型的消息可以解决此问题。至少一次传递意味着服务必须收到收件人的确认,以确保收到消息。在这种情况下,我们需要某种超时时间来重新发送消息。由于网络延迟或数据包丢失等原因,可能会让收件人发送确认,但发件人在超时之前不会收到确认,因此发件人将再次发送消息Notifications 带有发布/订阅和文档的Google云存储通知,notifications,google-cloud-storage,google-cloud-pubsub,Notifications,Google Cloud Storage,Google Cloud Pubsub,在关于GCP存储和发布/订阅通知的文档中,我发现这句话并不十分清楚: Cloud Pub/Sub还向收件人提供至少一次传递[这很清楚], 这意味着您可以接收多条消息,其中包含多个 ID,表示相同的云存储事件[为什么?] 有人能更好地解释这种行为吗 谢谢 至少一次传递意味着服务必须收到收件人的确认,以确保收到邮件。在这种情况下,我们需要某种超时时间来重新发送消息。由于网络延迟或数据包丢失等原因,可能会让收件人发送确认,但发件人在超时之前不会收到确认,因此发件人将再次发送消息 这是网络通信和分布式系
这是网络通信和分布式系统的一个常见问题,有不同类型的消息来解决此问题。谷歌云存储使用至少一次传递将通知传递到云发布/订阅。换句话说,对于发生的每个事件,GCS将至少向云发布/订阅一条消息 接下来,云发布/订阅将至少向最终用户您发送一次消息 因此,假设在某些罕见的情况下,GCS将关于同一事件的两条消息发布到云发布/订阅。现在,一个GCS事件有两个发布/订阅消息ID。下一步,更不可能的是,Pub/Sub会将这些消息发送两次。现在,您已收到4条消息,其中包含2个消息ID,与同一个GCS事件有关
该警告的重要意义在于,您不应尝试按发布/订阅消息ID重复删除GCS事件。谷歌云存储至少使用一次传递将您的通知发送到云发布/订阅。换句话说,GCS将为发生的每个事件向云发布/订阅发布至少一条消息 接下来,云发布/订阅将至少向最终用户您发送一次消息 因此,假设在某些罕见的情况下,GCS将关于同一事件的两条消息发布到云发布/订阅。现在,一个GCS事件有两个发布/订阅消息ID。下一步,更不可能的是,Pub/Sub会将这些消息发送两次。现在,您已收到4条消息,其中包含2个消息ID,与同一个GCS事件有关 警告的重要内容是,您不应尝试按发布/订阅消息ID重复删除GCS事件。回答“为什么”的问题 “至少一次”传递仅意味着消息将通过某种重试机制重试,直到成功传递(即确认)。因此,如果出现故障或超时,则需要重试 本质上(重试机制),这意味着您可能偶尔会有重复/多次交付。无论是PubSub还是GCS通知传递消息都是一样的 在您引用的场景中,您有:
- 消息传入时不进行重复数据消除
- 分配唯一PubSub
的所有消息,即使它们是相同GCS事件通知的副本消息id
使用PubSub 消息发送给订户后,订户必须确认或删除该消息。消息一旦发送出去交付,在订户确认之前,即被视为未完成 订阅者有一个可配置的、有限的时间或确认截止日期来确认消息。一旦截止日期过了,一条未完成的消息将无法确认 云发布/订阅将重复尝试传递任何尚未确认或未完成的消息 资料来源: 使用谷歌云存储 他们需要在内部做一些类似的事情,将通知事件从GCS“发布”到PubSub,所以原因基本相同
为什么这很重要
- 您需要预期来自GCS通知以及PubSub订阅的偶尔重复
- PubSub消息id可用于检测PubSub主题->订阅服务器中的重复项
- 您必须找出自己的幂等元id/令牌来处理来自“发布者”(GCS通知事件)的重复项
- 生成、元生成等。。从另一个角度来看可能会有所帮助