You can try : AckMode.BATCH with enable-auto-commit: false
AckMode.BATCH
enable-auto-commit: false
This gives you one commit per batch, not per record, and not time-based.
If you want absolute control (e.g., handle errors yourself before retry), you can go with :
AckMode.Manual