java – sessionTransacted和JmsTransactionManager之间的区别
作者:互联网
使用sessionTransacted = true(在JmsTemplate和/或DefaultMessageListenerContainer中)和使用JmsTransactionManager之间的主要区别是什么?对于JmsTemplate和DefaultMessageListenerContainer用法,是否使用sessionTransacted = true? (我不需要XA)
该文件说(setSessionTransacted setSessionTransacted中的方法),似乎应该不是问题:
Setting this flag to “true” will use a short local JMS transaction
when running outside of a managed transaction, and a synchronized
local JMS transaction in case of a managed transaction (other than an
XA transaction) being present.
解决方法:
正确.
在DMLC上,您通常只需要acknowledgemode = transacted;如果需要将JMS事务与JDBC事务同步或者需要使用平台(JTA)事务管理器,则只能在DMLC上使用事务管理器.
此外,容器线程上的任何下游JmsTemplate操作都将在同一会话中完成并参与事务.
类似地,对于不是容器线程的线程上的JmsTemplate操作,通常不需要事务管理器,除非平台需要它.
标签:java,spring,jms,spring-jms 来源: https://codeday.me/bug/20190624/1278714.html