pulsar-client-go icon indicating copy to clipboard operation
pulsar-client-go copied to clipboard

EnableZeroQueueConsumer fails with RetryEnable true or a DLQ policy

Open telnoratti opened this issue 1 year ago • 1 comments

Expected behavior

Setting EnableZeroQueueConsumer in the ConsumerOptions along with a DLQ policy or RetryEnable set to true, then calling Receive should return a message if there are messages.

Actual behavior

It never returns and there's an error printed ERRO[0000] unable to send initial permits to broker consumerID=2 error="invalid number of permits requested: 0" name=jgehd subscription=<subscription> topic="persistent://tenant/namespace/topic".

Steps to reproduce

consumer, err = client.Subscribe(pulsar.ConsumerOptions{
	Topic:            "persistent://tenant/namespace/topic",
	SubscriptionName: "subscription",
	Type:                        pulsar.Shared,
	RetryEnable:             true,                // When set to false this works as expected
	EnableZeroQueueConsumer: true,
}
consumer.Receive(context.Background())  // never returns even if there are messages

If I had to guess, I'd say that since this is because multiTopicConsumer it's not using the zeroQueueConsumer implementation. I am running with the patch from https://github.com/apache/pulsar-client-go/pull/1278.

System configuration

Pulsar version: 3.3.1 Library version: 0.14.1

telnoratti avatar Dec 12 '24 02:12 telnoratti

Thanks for your feedback, I will deal with this issue.

crossoverJie avatar Dec 12 '24 07:12 crossoverJie

@telnoratti This issue has been fixed #1391 , because ZeroQueueConsumer cannot be used with RetryEnable

crossoverJie avatar Jul 23 '25 05:07 crossoverJie