Nack的消息是否会阻塞有序订阅

Puslar v2.6.0

我们在实践中遇到了遇到了这种情况,表现为failover订阅中的消费者大量nack后不会再receive新的消息,只能收到nack的消息的重新投递。

nack的消息是怎么重新投递的呢,broker在缓存中做记录嘛?如果不开启死信主题,大量的nack会不会阻塞掉订阅的消费呢?

如果存在大量nack的情况,代表该订阅组积压了大量消息,这时会触发backlogQuotaDefaultRetentionPolicy策略来保护集群。nack行为由客户端触发,并在客户端内部通过NegativeAcksTracker记录了需要重试的消息索引,当重试时间达到后,则会通知broker再次推送该条消息,当到达重试阀值后则会发送死信主题,可以参考Messaging | Apache Pulsar