Google Pubsub消息长时间未确认且延迟接收问题排查求助
Google Pub/Sub 订阅延迟问题排查求助
我的订阅配置
- 投递类型:Pull
- 确认期限:15秒
- 重试策略:立即重试
(界面上还有其他相关参数)
消息处理代码
Func<Subscription, PubsubMessage, CancellationToken, Task<SubscriberClient.Reply>> gcpHandler = (subscription, msg, ctInner) => { _logger.LogInformation("Got some message!"); // 为了让消息处理逻辑尽快完成、尽早消费下一条消息,这里不await异步任务 var backgroundTask = SomeAsyncBackgroundJob(msg); _logger.LogInformation("Message was successfully processed!"); return Task.FromResult(SubscriberClient.Reply.Ack); }; var subscriberTask = subscriber.StartAsync((msg, _) => gcpHandler(subscription, msg, ct));
逻辑说明
gcpHandler内部执行速度极快,仅需1-5毫秒。我原本认为把业务逻辑放到后台异步任务,让消费者立即确认消息,就能尽快处理后续消息,这个设计是合理的。
异常问题
整体运行状态正常,但偶尔会出现异常:gcpHandler数分钟内无法接收任何消息。比如发送6条消息后,完全看不到“Got some message!”的日志输出,此时监控图表显示这些消息处于未确认状态——但消费者根本还没接收到它们!约4分钟后,消费者才最终接收并正常处理这些消息。该问题随机出现,且没有产生任何错误或异常信息。
我已经设置了“立即重试”策略,理论上消息应该被立即处理,但实际却出现了约4分钟的延迟。有没有人遇到过类似问题?应该从哪些方面进行排查?
附问题发生时的监控图表:

内容的提问来源于stack exchange,提问作者Alex K.
相关产品推荐
相关产品推荐

