I found compenhensive description of MDB strategies here.
AFAIK there is no way to perform ack manually, but if we use Bean Managed Transaction, the ack won't occure in case of exception in onMessage method. So we can start and finish our transaction 'manually' and in case of exception our message won't be ack.