【发布时间】:2021-06-24 23:31:21
【问题描述】:
我正在构建一个在Cloud Run 上运行的服务,该服务由PubSub 到EventArc 触发。
'PubSub' 保证至少交付一次,并且会在每个acknowledgement 截止日期重试。此截止日期在队列订阅详细信息中设置。
我们可以在服务接收到 pub-sub 请求(在服务中作为 POST 请求接收)时在两个时间点发回确认。
- 在收到请求后立即开始请求。然后,该服务将继续按照自己的节奏处理请求。但是,article 指出
当运行在 Cloud Run 上的应用处理完请求后,容器实例对 CPU 的访问将被禁用或受到严重限制。因此,您不应启动在请求处理程序范围之外运行的后台线程或例程。
所以一开始就发送响应可能不是一种选择
- 服务处理完请求后。所以这意味着,根据服务将做什么,我们不能总是预测处理请求需要多长时间。因此,我们无法正确设置确认截止日期,从而导致 PubSub 重试和重复请求。
那么这里的最佳做法是什么?有没有更好的方法来处理这个问题?
【问题讨论】:
标签: google-cloud-pubsub google-cloud-run event-arc