每秒向PubSub Topic发5条消息,无Worker时Pull Subscription积压未增长正常吗?
问题解答
这种情况不一定正常,需要结合订阅配置和消息处理流程具体分析,常见原因包括以下几点:
客户端SDK自动确认消息:如果你的Worker使用的SDK配置了自动确认(比如拉取到消息后立即调用
ack接口,无需等待业务逻辑处理完成),那么即使Worker刚拉取消息就被关闭,消息已经被标记为已处理,不会进入积压队列。若此时Topic仍在持续产生新消息但积压始终为0,需要确认是否有其他未察觉的消费进程在拉取消息。未到消息重新投递的超时窗口:如果采用手动确认模式,Worker关闭前拉取的消息会处于"未确认"状态,但只有当
ack_deadline(确认超时时间)到期后,这些消息才会重新返回订阅的积压队列。如果刚关闭Worker就查看指标,可能还未触发重新投递,此时未确认消息数和积压字节不会立即增长。无待处理消息留存:关闭Worker前,所有被拉取的消息都已完成处理并确认,且关闭后Topic没有新消息发布。这种情况下积压为0是完全正常的,因为没有待处理的消息。
订阅配置异常:若订阅设置了过短的消息留存时间,或者错误配置了
max_outstanding_messages/max_outstanding_bytes为0(这种情况较少见,毕竟之前有Worker正常拉取),也可能导致消息无法积压,需要核对订阅的具体参数。
内容的提问来源于stack exchange,提问作者Patrick White
相关产品推荐
相关产品推荐

