You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RabbitMQ结合Hibernate报错:无法提交JDBC连接

问题

我正在开发一个基于JHipster的Spring Boot小型应用,该应用监听RabbitMQ队列,确认消息后执行Hibernate仓库操作。目前消息消费正常,但调用Hibernate仓库时出现事务管理器混乱,抛出如下异常:

Caused by: org.hibernate.TransactionException: Unable to commit against JDBC Connection
    at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.commit(AbstractLogicalConnectionImplementor.java:92)
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:282)
 ...
Caused by: org.postgresql.util.PSQLException: Cannot commit when autoCommit is enabled.
    at org.postgresql.jdbc.PgConnection.commit(PgConnection.java:872)

我的RabbitMQ配置如下:

@Configuration
public class RabbitExchangeConfiguration {

    @Bean
    Queue queue() {
        return new Queue("myQueue", false);
    }
}

TestService类包含RabbitMQ监听器listen方法和调用数据库事务管理器访问仓库的test方法:

@Service
public class TestService {

    public TestService(
        MyRepository myRepository
    ) {
        this.myRepository= myRepository;
    }

    // 消息监听方法
    @RabbitListener(queues = "datafactory")
    public void listen(Message in) {
        String messageBody = new String(in.getBody());       
        test(messageBody);
    }

    // 仓库操作方法
    @Transactional(transactionManager = "myDatabaseTransactionManager")
    public void test(String content) {
        myRepository.findById(content).orElse(null);
        ..
    }
}

注释test方法调用时消息可正常接收,调用则抛出异常。我曾疑惑能否在进入Hibernate事务上下文前结束RabbitMQ事务,以及监听器为何使用Hibernate事务。

解决方案

问题已解决:感谢p3consulting的回答,发现JHipster默认配置了jpa.properties.hibernate.connection.provider_disables_autocommit=true,只需添加以下配置禁用自动提交即可:

spring.datasource.hikari.auto-commit=false  // 禁用自动提交
spring.jpa.properties.hibernate.connection.provider_disables_autocommit=false   // 保持禁用状态

此问题与RabbitMQ无关。

内容的提问来源于stack exchange,提问作者GameDroids

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:20:33