Thanks Sijie!

Regards,
Subash Kunjupillai

From: Sijie Guo <[email protected]>
Sent: Thursday, April 9, 2020 10:44 PM
To: [email protected]
Subject: Re: Clarity on Pulsar Consumer API receive

Raman Gupta answered your question in Slack. I copied and pasted his answer 
here.

Firstly, that Kafka call doesn't get all unread messages, it gets an undefined 
amount of messages which might be all or might be less (there are a bunch of 
consumer properties that control this like fetch.max.bytes and 
max.poll.records.Secondly, AIUI the Pulsar consumer does the same thing in the 
background but presents a simpler one-receive-per-message API to you the user. 
See receiverQueueSize for 
configuring<https://pulsar.apache.org/docs/en/client-libraries-java/#configure-consumer>
 this behavior.If you really want to receive a batch of messages all at once, 
you can use a batching 
receive<https://pulsar.apache.org/docs/en/client-libraries-java/#batch-receive>.

- Sijie

On Thu, Apr 9, 2020 at 8:53 AM Subash K 
<[email protected]<mailto:[email protected]>> wrote:
Hi,

I'm new to Pub-Sub systems and currently comparing features of Kafka and 
Pulsar. I've started with simple producer and consumer and I notice a key 
difference in the consumer API.

  *   The Consumer API of Kafka poll ConsumerRecords<Integer, byte[]> records = 
consumer.poll(0); gets all the unacknowledged messages available in the topic 
at that point of time.
  *   But whereas the consumer API of Pulsar receive msg = consumer.receive(0, 
TimeUnit.SECONDS); gets only one unacknowledged message from the topic.
I'm wondering is there any advantage seen in Pulsar by returning only one 
message at a time. Can someone please help in clarifying?

P.S: I'm using the default subscription mode in consumer (Exclusive)

Regards,
Subash Kunjupillai

Reply via email to