有一个 Google Cloud PubSub 主题,我们向其发布 200 万条微小/小型消息。我们设置了一个云函数来处理通过该主题发送的消息。在检查日志时,我们发现许多此类消息被多次处理。总而言之,我们收到的消息数量为 150-200%(请参见最后的屏幕截图)。
问题是:这是为什么?我们如何正确配置事物以减少重复?
1中标记为和。2所以我想绝对确定这是“真正的”重复,我的意思是它是 PubSub 多次传递消息/事件,而不是我们在某个地方笨拙地引入的重复。因此,我修改了函数代码,根据外部消息 ID 形成数据存储区密钥,并context.messageId使用计数器将其写入数据存储区。如果密钥已经存在,则计数器会递增。之后我立即记录该实体。以下是 458,940 次处决的统计数据:
|-------------------|-------------------|
| Counter | Logs |
|-------------------|-------------------|
| 1 | 208,733 |
| 2 | 101,040 |
| 3 | 62,965 |
| 4 | 37,156 |
| 5 | 20,583 |
| >5 …Run Code Online (Sandbox Code Playgroud)