pubSub Source:两次收到相同的消息

pubSubSource: Receving the same message twice

描述

如何重现

为什么会这样,是不是我做错了什么?

我在 https://cloud.google.com/pubsub/docs/faq 找到了以下信息,看来您也遇到了同样的问题。您可以尝试生成大消息并查看结果是否相同吗?

详情来自link:

为什么重复邮件太多? Pub/Sub 保证至少传递一次消息,这意味着偶尔会出现重复。但是,高重复率可能表明客户端未在配置的 ack_deadline_seconds 内确认消息,并且 Pub/Sub 正在重试消息传递。这可以在请求订阅的监控指标 pubsub.googleapis.com/subscription/pull_ack_message_operation_count 和推送订阅的 pubsub.googleapis.com/subscription/push_request_count 中观察到。在 /response_code 中查找升高的过期值或 webhook_timeout 值。如果有很多小消息,这种情况尤其可能发生,因为 Pub/Sub 可能会在内部对消息进行批处理,部分确认的批处理将被完全重新传送。

另一种可能性是订户未确认某些消息,因为处理这些特定消息的代码路径失败,并且从未进行确认调用;或者推送端点从不响应或响应错误。

如何检测重复邮件? Pub/Sub 为每条消息分配一个唯一的 message_id ,可用于检测订阅者收到的重复消息。但是,这不会让您检测到对同一数据的多个发布请求所导致的重复。检测这些将需要发布者提供唯一的消息标识符。有关进一步讨论,请参阅 Pub/Sub I/O。