在我的项目中,我使用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服务器的任何显式发送/接收调用。如果使用基于文件的存储,则连接的自动提交状态为真。
问题:
请注意,此数据源上没有定义事务管理器。
问题的解决方案是为Artemis使用专用数据源。