Cloud Pub/Sub 订阅者重复消息超过 600 毫秒

阿米特

我们最近将 google pubsub 集成到我们的应用程序中,我们的一些长期运行的任务现在遇到了问题,因为它们有时需要超过 1 分钟。我们已将订阅者的 ack 截止时间配置为 600 秒,但是,任何超过 的时间600ms都会被 pubsub 重试。

这是我们的配置:

gcloud pubsub subscriptions describe name

ackDeadlineSeconds: 600
expirationPolicy: {}
messageRetentionDuration: 604800s

不知道是什么问题。我们的大部分任务都会因此而重复

纳韦尔·瓦雷拉

Pub/Sub 有一个内置的At-least-once传递系统,它会重试未被确认的消息。在这种情况下,经过 600 秒后,您第一次发送的消息将变为未确认状态,因此 Pub/Sub 会重试该消息。它将继续重试 600 秒,直到达到messageRetentionDuration或您确认为止。

请记住,文档中指定您的订阅者应该是幂等的。因此,让您的代码能够处理多条消息应该是解决此问题的最佳方法。

您还可以将 减少messageRetentionDuration600s(它是最小值),这样任何超过 10 分钟标记的东西都不会被重试。

此外,常见问题解答中指出:

为什么重复消息太多?

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Firebase Cloud pubsub订阅停止监听消息

来自分类Dev

如何在Google Cloud App Engine上使用PubSub创建订阅者,以通过Publisher从Google Cloud App Engine Flex收听消息?

来自分类Dev

接收重复消息的 Google PubSub Python 多订阅者客户端

来自分类Dev

Spring Cloud Stream-Solace PubSub +-消费者并发

来自分类Dev

GCP Cloud Function无法正确接收/确认PubSub消息

来自分类Dev

在Google Cloud PubSub中获取单个消息的大小

来自分类Dev

Google Cloud PubSub:不发送/接收来自Cloud Functions的所有消息

来自分类Dev

如何仅使用主题名称(而不是订阅名称)订阅Google Cloud pubsub?

来自分类Dev

如何通过Terraform使用服务帐户创建Google Cloud pubsub订阅?

来自分类Dev

python pubsub订阅到期

来自分类Dev

Google Cloud PubSub在异步请求中侦听消息时抛出504 Deadline Exceeded错误

来自分类Dev

GCP Pubsub 中的消息丢失和重复

来自分类Dev

Google Cloud PubSub 访问查询参数

来自分类Dev

Windows有时会挂起300-600毫秒-由Performance Counter测量

来自分类Dev

python pubsub订阅多个主题

来自分类Dev

python pubsub订阅多个主题

来自分类Dev

重复的毫秒时间戳问题

来自分类Dev

使用DoFn使用Cloud Dataflow从PubSub写入Google Cloud Storage

来自分类Dev

Redis Pubsub和消息队列

来自分类Dev

如果超过x毫秒,如何超时通话?

来自分类Dev

Google Cloud PubSub提供-订阅的拉取请求发送到暂时超载的服务器。请再试一次

来自分类Dev

如何缩放activejob-google_cloud_pubsub worker?

来自分类Dev

App Engine的Google Cloud Pubsub身份验证错误

来自分类Dev

setup.py 无法安装 google-cloud-pubsub

来自分类Dev

通过HTTP的python pubsub /消息队列?

来自分类Dev

在Dataflow Python中从PubSub读取AVRO消息

来自分类Dev

在AppEngine中验证PubSub Push消息

来自分类Dev

谷歌的PubSub并从主题重复的邮件

来自分类Dev

没有名为providers.google.cloud.operators.pubsub的模块:Google Cloud Composer

Related 相关文章

  1. 1

    Firebase Cloud pubsub订阅停止监听消息

  2. 2

    如何在Google Cloud App Engine上使用PubSub创建订阅者,以通过Publisher从Google Cloud App Engine Flex收听消息?

  3. 3

    接收重复消息的 Google PubSub Python 多订阅者客户端

  4. 4

    Spring Cloud Stream-Solace PubSub +-消费者并发

  5. 5

    GCP Cloud Function无法正确接收/确认PubSub消息

  6. 6

    在Google Cloud PubSub中获取单个消息的大小

  7. 7

    Google Cloud PubSub:不发送/接收来自Cloud Functions的所有消息

  8. 8

    如何仅使用主题名称(而不是订阅名称)订阅Google Cloud pubsub?

  9. 9

    如何通过Terraform使用服务帐户创建Google Cloud pubsub订阅?

  10. 10

    python pubsub订阅到期

  11. 11

    Google Cloud PubSub在异步请求中侦听消息时抛出504 Deadline Exceeded错误

  12. 12

    GCP Pubsub 中的消息丢失和重复

  13. 13

    Google Cloud PubSub 访问查询参数

  14. 14

    Windows有时会挂起300-600毫秒-由Performance Counter测量

  15. 15

    python pubsub订阅多个主题

  16. 16

    python pubsub订阅多个主题

  17. 17

    重复的毫秒时间戳问题

  18. 18

    使用DoFn使用Cloud Dataflow从PubSub写入Google Cloud Storage

  19. 19

    Redis Pubsub和消息队列

  20. 20

    如果超过x毫秒,如何超时通话?

  21. 21

    Google Cloud PubSub提供-订阅的拉取请求发送到暂时超载的服务器。请再试一次

  22. 22

    如何缩放activejob-google_cloud_pubsub worker?

  23. 23

    App Engine的Google Cloud Pubsub身份验证错误

  24. 24

    setup.py 无法安装 google-cloud-pubsub

  25. 25

    通过HTTP的python pubsub /消息队列?

  26. 26

    在Dataflow Python中从PubSub读取AVRO消息

  27. 27

    在AppEngine中验证PubSub Push消息

  28. 28

    谷歌的PubSub并从主题重复的邮件

  29. 29

    没有名为providers.google.cloud.operators.pubsub的模块:Google Cloud Composer

热门标签

归档