关于启用parallelPullCount时GCP Pub/Sub有序消息投递及异常处理的咨询
GCP Pub/Sub 有序消息与parallelPullCount 行为解析
问题1:启用parallelPullCount后,相同排序键的两条消息是否会同时投递?
- 不会。只要订阅开启了有序消息投递(即设置
enableMessageOrdering=true),即便配置了parallelPullCount,Pub/Sub也会保证同一排序键的消息不会被同时分发到不同线程或并发拉取进程。有序投递的核心逻辑是为同一排序键的消息维护专属投递序列,同一时间只会有一条未确认的消息处于流转状态。
问题2:开启parallelPullCount后,有序消息是否仍逐个投递?
- 是的。针对同一排序键的消息,必须等前一条消息被**确认(ack)**后,下一条才会被投递到订阅端。
parallelPullCount仅用于提升不同排序键消息的并发处理效率,同一排序键的消息依然严格遵循串行投递、串行确认的规则。
错误或Nack操作时的行为
- 当同一排序键的消息处理出错,或是被执行
nack操作时,这条消息会重新进入待投递队列,并且会阻塞该排序键后续所有消息的投递,直到这条重试消息被成功确认,或是达到最大重试次数进入死信队列(若已配置)。 - 其他排序键的消息不受此影响,依然可以通过
parallelPullCount配置的并发线程正常处理。
内容的提问来源于stack exchange,提问作者RaRa
相关产品推荐
相关产品推荐

