提问者:小点点

ActiveMQ Artemis:PostgresDB持久性:自动提交


在我的项目中,我使用postgresDB进行消息存储。

ActiveMQ Artemis用作基于Spring的JavaWeb应用程序中的嵌入式服务器。

在启动JMS服务器之前以编程方式设置实际数据源

                DatabaseStorageConfiguration storeConfiguration = (DatabaseStorageConfiguration)this.activeMQServer.getConfiguration().getStoreConfiguration();
                if (null != storeConfiguration) {
                    storeConfiguration.setDataSource(this.getDataSource());
                }

我注意到,在使用postgresDB存储消息时,Artemis将autoCommit状态设置为false。这是针对从数据源返回的所有DB连接执行的,而不考虑对JMS服务器的任何显式发送/接收调用。如果使用基于文件的存储,则连接的自动提交状态为真。

问题:

  1. 将自动提交值设置为false以及所有连接都设置为false的原因是什么?
  2. 如果在使用tomcat创建连接池时显式将此值设置为true会有什么影响。

请注意,此数据源上没有定义事务管理器。


共2个答案

匿名用户

  1. 将自动提交设置为false允许在日志实现中手动管理事务。我认为日志实现者需要一些细粒度的方法来处理失败和回滚。
  2. 理论上没有,因为实现者应该将其设置为false。在实践中…

匿名用户

问题的解决方案是为Artemis使用专用数据源。