We have introduced the feature of individual ACK even through JMS. if you use HornetQJMSConstants.INDIVIDUAL_ACKNOWLEDGE on the session type, every ACK will be done individually.
You could also do the way you liked through core API.
Just be careful with too many messages on the buffer and having to do a big scan to find messages. but if you are dealing with regular buffer sizes and set flow control to default values, it should be alright.
Thank you for the response! I decided to use the core API for both the producer and consumer, but it is good to know about the JMS option going forward.
I will keep the warning in mind regarding buffer sizes and flow control, as we may encounter bursts of high volume.