Google cloud platform Google Cloud发布/订阅推送订阅在消息处理期间重试消息传递

Google cloud platform Google Cloud发布/订阅推送订阅在消息处理期间重试消息传递,google-cloud-platform,subscription,google-cloud-pubsub,Google Cloud Platform,Subscription,Google Cloud Pubsub,我正在运行一个基于Java8servlet的应用程序作为Google云发布/订阅推送端点。确认截止时间为600秒。服务器是嵌入式Jetty 9.4 假设我有一条消息M,我知道该消息将通过推送订阅发布到主题 我的端点在确认消息之前需要很长时间来处理它。它执行一个脚本(作为使用JavaProcessBuilderclass的子进程),该脚本有时可以运行很长时间。假设我在上午8:00:00收到消息M。我的脚本开始运行,推送订阅发送的请求仍处于活动状态。然后,在上午8:00:30,我收到了相同的消息M,

我正在运行一个基于Java8servlet的应用程序作为Google云发布/订阅推送端点。确认截止时间为600秒。服务器是嵌入式Jetty 9.4

假设我有一条消息
M
,我知道该消息将通过推送订阅发布到主题

我的端点在确认消息之前需要很长时间来处理它。它执行一个脚本(作为使用Java
ProcessBuilder
class的子进程),该脚本有时可以运行很长时间。假设我在上午8:00:00收到消息
M
。我的脚本开始运行,推送订阅发送的请求仍处于活动状态。然后,在上午8:00:30,我收到了相同的消息
M
,即使我没有返回对先前请求的
200
500
响应

当我在本地测试我的应用程序时,我能够在40秒或更长时间后发布
200
响应


我怎样才能解决这个问题?我知道我可能应该使用请求订阅,但我观察到的行为没有记录,或者至少我找不到它。

确认截止日期不能保证消息不会在该时间段内重新发送;这是最大的努力。对于长期推送请求,如果服务器认为传出请求已终止,则可以重新传递消息,这很可能是请求活动的时间越长。可能是与服务器的连接不牢固,或者可能是某种服务器端的截止日期,它以比处理代码更高的级别响应请求


您可以查看订阅/推送请求计数的度量,尤其是查看订阅/推送请求计数,您可以按响应进行细分,并查看云发布/订阅是否认为返回了错误响应。

结果,为推送端点提供服务的我的实例之间的GCP负载平衡器有30秒超时。

感谢您的响应!事实证明,为推送端点提供服务的GCE my实例之间的负载平衡器有30秒超时。