springjms:在事务中接收消息

时间:2018-09-06 08:08:11

标签: java spring-jms

我需要测试:

  • 我的客户是否在本地交易中收到来自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不被接受。

我真的不明白什么是问题,我的考试正确多少?

0 个答案:

没有答案