tongsucn opened a new issue #6000: Sending Individual ACK for multiple messages 
in one command.
URL: https://github.com/apache/pulsar/issues/6000
 
 
   Shared subscription can only employ Individual ACK, which may limit the 
throughput. However, from 
[`PulsarApi.proto`](https://github.com/apache/pulsar/blob/5504dc6e280237ab1abc70fc2889be6149ae518a/pulsar-common/src/main/proto/PulsarApi.proto#L461)
 we find that Pulsar supports acknowledging multiple messages in one command 
even in Individual mode.
   
   Java client supports this feature by adding `acknowledgeGroupTime` setting 
in 
[`ConsumerBuilder`](http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ConsumerBuilder.html#acknowledgmentGroupTime-long-java.util.concurrent.TimeUnit-),
 but C++ client does not.
   
   So the questions are:
   
   1. In Individual ACK mode, does *sending multiple message IDs in one 
`CommandAck`* really help achieving higher throughput?
   2. If we implement this feature in C++ client (and later contribute back to 
community), shall it be implemented as an ACK interface, or as a setting like 
in Java. (Seems the previous one is easier.)
   3. If it's implemented as an ACK interface, what should it be called? 
`acknowledgeGroup` or `groupAcknowledge`? We prefer the term `group`, because 
the C++ client has a data structure called `BatchAcknowledgeTracker`, which may 
confuse the code reader when we have two similar names for different purpose.
   
   ### BTW
   
   **Does `acknowledge` interface in C++ client really sending ACK 
synchronously?**
   
   It actually calls the 
[`acknowledgeAsync`](https://github.com/apache/pulsar/blob/5504dc6e280237ab1abc70fc2889be6149ae518a/pulsar-client-cpp/lib/Consumer.cc#L87)
 and waits for triggering of the callback. But the 
[`doAcknowledge`](https://github.com/apache/pulsar/blob/5504dc6e280237ab1abc70fc2889be6149ae518a/pulsar-client-cpp/lib/ConsumerImpl.cc#L790)
 it calls returns immediately anyway with `ResultOk`, because sending command 
is actually an asynchronous operation? Is this a known feature/issue? Or I just 
misunderstand the implementation? Is there any opened issues related to this?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to