Google cloud platform 谷歌发布/订阅+;云运行生成多个容器
我在找人帮忙! 我正在从事一个小项目,该项目涉及将消息发布到Google发布/订阅主题,并使用“推送”订阅触发云运行的HTTPS服务。 我遇到的问题是,“推送”订阅的确认截止日期似乎没有得到遵守。我看到同一条消息在云运行服务中生成多个容器,即使在第一次运行时还没有达到确认截止日期或请求超时。我只希望一条消息生成一个容器一次完成(返回200 OK) 当前流量(问题):Google cloud platform 谷歌发布/订阅+;云运行生成多个容器,google-cloud-platform,google-cloud-pubsub,google-cloud-run,Google Cloud Platform,Google Cloud Pubsub,Google Cloud Run,我在找人帮忙! 我正在从事一个小项目,该项目涉及将消息发布到Google发布/订阅主题,并使用“推送”订阅触发云运行的HTTPS服务。 我遇到的问题是,“推送”订阅的确认截止日期似乎没有得到遵守。我看到同一条消息在云运行服务中生成多个容器,即使在第一次运行时还没有达到确认截止日期或请求超时。我只希望一条消息生成一个容器一次完成(返回200 OK) 当前流量(问题): 将消息发布到pubsub主题 “推送”订阅(Ack截止时间为600秒)将消息转发到云运行的HTTPS服务端点(请求超时为600秒)
gcloud pubsub subscriptions describe myBuildSubscription
ackDeadlineSeconds: 600
expirationPolicy: {}
messageRetentionDuration: 87000s
name: projects/myproject-12345/subscriptions/myBuildSubscription
pushConfig:
oidcToken:
serviceAccountEmail: cloud-run-pubsub-invoker@myproject-12345.iam.gserviceaccount.com
pushEndpoint: https://my-project-example-ue.a.run.app
topic: projects/myproject-12345/topics/my_build_queue
其他信息:
我的工作基于本教程:
为了模拟120秒的工作时间,我在发布/订阅教程代码中添加了睡眠功能:
当前解决方案:
将容器的最大数量和每个容器的最大请求数设置为1。这样一次只允许处理来自主题的一条消息
有人能提供一些关于为什么会发生这种情况的建议吗?配置似乎正确,但我可能遗漏了一些内容。我能够通过在命令行中使用所需的截止日期和并发配置重新创建pubsub订阅和云运行服务来解决我的问题 我第一次在命令行创建订阅和云运行服务,后来在谷歌云用户界面中更改了确认截止日期。我怀疑出于某种原因,谷歌云后端没有出现这种变化
gcloud pubsub subscriptions create mySubscription --topic projects/myproject-123456/topics/build_queue --push-endpoint=https://myservice-ue.a.run.app --push-auth-service-account=cloud-run-pubsub-invoker@myproject-123456.iam.gserviceaccount.com --ack-deadline 600
gcloud run deploy --memory 2Gi site-build --image gcr.io/myproject-123456/site-builder --concurrency 1 --max-instances 10
您的问题中没有代码,因此我们只能猜测。确保日志显示每10秒重新发送一次相同的消息id。最有可能的问题是您无意中收到了邮件。请记住,推送订阅没有明确的ack/nack。成功代码被视为ack,而4xx/5xx错误代码将导致重新传递消息。我建议您检查您的调用响应。您好@JohnHanley,谢谢您的关注。有一个Github链接指向我用来复制问题的代码。我也有同样的问题。我后来改变了最后期限。我会尝试你的建议并尽快分享我的反馈。谢谢