I think it's better to add the method to Consumer interface instead of let user casting it to `ConsumerBase`. `peek` is most complexly, for the reason, I can use the `peek` object to ack、negative ack, but when to remove from the `BlockingQueue`? IMHO, people use this api are just to judge if has the message, otherwise, they can just use `receive(0,TimeUnit)
JiangHaiting <jianghait...@foxmail.com> 于2021年10月26日周二 上午10:19写道: > Can this method > "org.apache.pulsar.client.impl.ConsumerBase#getTotalIncomingMessages" do > the trick? Though you have to change the type to ConsumerBase. > > > And maybe `peek` is more suitable and useful to add to the Consumer > interface? > > > > > > > ------------------ Original ------------------ > From: > "dev" > < > shoot...@gmail.com>; > Date: Mon, Oct 25, 2021 07:24 PM > To: "dev"<dev@pulsar.apache.org>; > > Subject: [DISCUSSION] PIP-108: Add method to help user judge if > consumer queue has message > > > > https://github.com/apache/pulsar/issues/12479 > > --- Pasted here for quoting convenience --- > > ## Motivation > Currently, I have an application that manages ten thousand of consumers, > and a logic to schedule consumers's receive. It would be helpful to know if > one of the consumers have message to recive. > > ## Goal > To make `Consumer` can judge if there are unreceiving messages > > ## API Changes > > Add `hasMessageInReceiverQueue` on the `Consumer` interface. > > ## Implementation > > For `ZeroQueueConsumerImpl` return false, Others, judge the > `receiveQueueSize` greater than zero. > > > ## Reject Alternatives > > No alternatives yet. > > > > > --- > Thanks, > Haiting Jiang (Github: Jason918)