Details
Description
It seems that karaf jms:* commands are not locally transactional as suggested by the following piece of code in org.apache.karaf.jms.internal.JmsConnector at line 97:
return session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
In my opinion, it could be interesting to create transacted session that the client explicitely commit. For instance:
return session = connection.createSession(true, Session.CLIENT_ACKNOWLEDGE);
This would secure the move a lot.
Moreover, we could explicitely commit messages one by one so that problematic messages could be insulated in the DLQ.