我需要测试:
QM
的消息?我的意思是,如果我在id
1(在transaction
中)收到msg后抛出异常,则必须将msg回滚到服务器。当我的客户再次收到msg时,它必须得到id
为1的那个消息。
在文档中,关于在事务中接收消息的说法只需要配置一个@Bean
DefaultMessageListenerContainer
并将标志isTransacted
设置为true
或设置JtaManagerFactory
bean:
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>
然后,您只需将其添加到我们之前的容器配置中即可。容器将负责其余的工作。
<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="destination" ref="destination"/>
<property name="messageListener" ref="messageListener"/>
<property name="transactionManager" ref="transactionManager"/>
</bean>
在调试中,我发现抛出异常事务后无法正常工作,即使抛出Exception
也总是提交msg。如果我使用JmsTransacionManager
,我可以看到它调用了一种回滚方法,但也无济于事。来自ID
的下一个接收消息QM
不被接受。
我真的不明白什么是问题,我的考试正确多少?