Async/Sync MQ Listeners to pull message and then update DB with ACK/NACK back to user

I have requirement as follows.

Have to configure MQ Listener to pull messages from queue and then update DB.
I should also send an ACK/NACK back to sender of the message.

I am using a single transaction local queue for this.What can be the best approach for this?
Which listener i shall use ,asyn or sync?
i would prefer processing in the same order as they appear in queue.
Also how could I send ack/nack based update on update on DB is success/fail.I should be sending ack/nack to sender who put the message in MQ.

Please suggest .

This should be taken care by invoking service by MQ listener, usually prefer asyn only.Even we can configure MQ level ack/nack. Need to check some more constraints like, message size, number of messages, hard ware , OS etc. Here we can give 2 -3 approaches to handle it.