首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google Pub/Sub + Cloud运行生成多个容器

Google Pub/Sub + Cloud运行生成多个容器
EN

Stack Overflow用户
提问于 2020-03-02 17:53:15
回答 1查看 1.2K关注 0票数 2

我在找人帮忙!我正在做一个小项目,该项目涉及将消息发布到Google /Sub主题,并使用“push”订阅来触发云运行HTTPS服务。我遇到的问题是,Ack关于“推送”订阅的最后期限似乎没有得到遵守。我看到同一条消息在云运行服务中生成多个容器,即使在第一次运行时还没有达到Ack最后期限或请求超时。我只想要一条消息产生一个容器一次完成(返回200确定)。

当前流量(发行):

  1. 消息被发布到公共主题。
  2. “推送”订阅( 600秒Ack截止日期)将消息转发给云运行HTTPS服务端点( 600秒请求超时)
  3. 云运行服务开始处理此消息,这项工作需要120秒
  4. 在处理过程中,相同的消息重新触发一个新的云运行服务容器(每10秒直到第一个容器完成),为同一消息生成多个容器。
  5. 一旦第一个云运行容器完成,就不会启动新的云运行容器,消息将每10秒停止接收。

屏幕截图

预期流量(我想要的):

  1. 消息被发布到公共主题。
  2. “推送”订阅( 600秒Ack截止日期)将消息转发给云运行HTTPS服务端点( 600秒请求超时)
  3. 仅用一个容器处理此消息120秒钟。任何新消息都应该在单独的容器上启动。
  4. Cloud服务在600秒Ack截止日期内完成处理,并且不会为同一条消息生成新的容器。

订阅说明:

代码语言:javascript
运行
复制
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

附加信息:--我是根据本教程工作的:https://cloud.google.com/run/docs/tutorials/pubsub

为了模拟120秒钟的工作,我在Pub/Sub教程代码中添加了一个睡眠函数:

https://github.com/cvasq/golang-samples/commit/fa2286d4395d31b5eca12d73dd24187042211124

当前的解决方案:将每个容器的最大容器数和最大请求设置为1。这允许一次只处理来自主题的一条消息。

有人能提供一些关于为什么会发生这种情况的建议吗?配置似乎是正确的,但我可能遗漏了什么。

EN

回答 1

Stack Overflow用户

发布于 2020-03-03 00:22:26

我能够通过在命令行重新创建pubsub订阅和云运行服务来解决我的问题,并提供了所需的最后期限和并发配置。

第一次在命令行创建订阅和云运行服务时,我更改了Google中的Ack截止日期。我怀疑由于某种原因,这一变化并没有影响Google后端。

代码语言:javascript
运行
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60494164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档