Correct.
In DefaultMessageListenerContainer(DMLC)you usually only need DefaultMessageListenerContainer(DMLC) acknowledgemode=transacted; you will only use the transaction manager in the DMLC if you need to synchronize a JMS transaction with, say, a JDBC transaction, or if you need to use a platform transaction manager (JTA).
In addition, any subsequent operation JmsTemplatein the container stream will be performed in the same session and participate in the transaction.
Similarly, for operations JmsTemplatein a thread that is not a container stream, you usually do not need a transaction manager, unless the platform requires it.
source
share