Sending Individual ACK for multiple messages in one command.
See original GitHub issueShared subscription can only employ Individual ACK, which may limit the throughput. However, from PulsarApi.proto
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
, but C++ client does not.
So the questions are:
- In Individual ACK mode, does sending multiple message IDs in one
CommandAck
really help achieving higher throughput? - 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.)
- If it’s implemented as an ACK interface, what should it be called?
acknowledgeGroup
orgroupAcknowledge
? We prefer the termgroup
, because the C++ client has a data structure calledBatchAcknowledgeTracker
, which may confuse the code reader when we have two similar names for different purpose.
BTW
Does acknowledge
interface in C++ client really send ACK synchronously?
It actually calls the acknowledgeAsync
and waits for triggering of the callback. But the doAcknowledge
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?
Issue Analytics
- State:
- Created 4 years ago
- Comments:8 (8 by maintainers)
Top GitHub Comments
FYI. The feature is almost done, For now, it improves the throughput bottleneck in shared subscription in our scenario, I’ll firstly try it in production envrionment to verify more. After that, I’ll add related necessary building and testing code and submit a new pull request.
PR is created. However, the Backwards Compatibility CI checking failed because of docker storage. Retry later.