正常情况下,mq发出消息后会立即执行,但是在分布式事务执行过程中,会有这样的一种情况,即方法执行后,事务成功提交才希望消息执行,这样就需要配置一下JmsTemplate,两种方法
1)在spring 配置文件中添加jmsTemplate的属性sessionTransacted,默认为false,设置成true即可
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="sessionTransacted" value="true" />
</bean>
2)在程序中为jmsTemplate设置属性jmsTemplate.setSessionTransacted(true);