ActiveMQ Artemis:Postgres数据库持久性:自动提交



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

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

在启动JMS服务器之前,实际的数据源是通过程序设置的

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

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

问题:

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

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

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

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

最新更新