【问题标题】:Atomikos Transaction management spring boot/spring jamsAtomikos 事务管理 spring boot/spring jams
【发布时间】:2016-06-12 06:31:21
【问题描述】:

我有一个使用 DefaultMessageListener 容器的带有 spring JMS 的 spring boot 应用程序。我正在使用 Atomikos 进行事务管理。 在异常情况下,消息队列回滚工作正常,消息确实移动到回退队列,但数据库更新不会回滚。我已经在 DefaultMessageContainerBean 上设置了自动配置的 JtaTransactionManager。这里是否需要任何其他配置才能获得真正的全局事务管理。我正在使用 My Batis 作为数据库。

public class CusListener implements MessageListener{
public void onMessage(Message message) {

    //Database call

    catch (Exception ex) {

                throw (new RuntimeException());
                }

}
}



@Configuration
public class ListenerContainer{

    @Bean
    public  DefaultMessageListenerContainer  defaultMessageListenerContainer(ConnectionFactory queueConnectionFactory,MQQueue queue, MessageListener listener,
            JtaTransactionManager jtaTransactionManager) {


        DefaultMessageListenerContainer defaultMessageListenerContainer =
                new DefaultMessageListenerContainer();
        defaultMessageListenerContainer.setConnectionFactory(queueConnectionFactory);               
        defaultMessageListenerContainer.setDestination(queue);
        defaultMessageListenerContainer.setMessageListener(listerner);
        defaultMessageListenerContainer.setTransactionManager(jtaTransactionManager);
        defaultMessageListenerContainer.setSessionTransacted(true);
        defaultMessageListenerContainer.setConcurrency("3-10");


        return defaultMessageListenerContainer; 
}

    //other beans declaration passed in the method above
}



@Configuration
public class PlanListenerSqlSessFac {


    @Bean(name="sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") NMCryptoDataSourceWrapper dataSource) throws Exception {

    }



    @Bean(name="driverManagerDataSource")
    public DriverManagerDataSource driverManagerDataSource() {
        DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();

        return driverManagerDataSource;
       }

}

【问题讨论】:

  • 不看代码很难知道发生了什么。
  • 下面的 JMS anb DB 交互代码需要相当多的标准 bean:-
  • 添加了问题代码。

标签: spring spring-boot mybatis spring-jms atomikos


【解决方案1】:

您应该使用 AtomikosDataSourceBean 作为 dataDource。

查看文档:https://www.atomikos.com/bin/view/Documentation/ConfiguringJdbc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 2017-08-11
    • 2017-12-23
    • 1970-01-01
    • 2013-11-28
    • 2022-11-05
    • 2015-07-07
    相关资源
    最近更新 更多