Transactions JDBC提交失败;嵌套异常为java.sql.SQLException:连接已关闭,Spring Camel Transact()正在侦听Kafka使用者

Transactions JDBC提交失败;嵌套异常为java.sql.SQLException:连接已关闭,Spring Camel Transact()正在侦听Kafka使用者,transactions,spring-camel,camel-jdbc,Transactions,Spring Camel,Camel Jdbc,尝试侦听Kafka消费者并在事务中执行一些查询,并将其存储到JDBC数据存储。 执行一个查询后,我发现连接关闭错误。如果删除Transact()则不会出现此问题。但我的用例是在事务中使用kafka consumer的数据后执行多个查询,即执行并持久化数据库中的所有查询,或者如果在一个数据库中执行exeption,则不执行查询 StudentRouteBuilder.java- @服务 公共类学生RouteBuilder扩展了RouteBuilder{ @Override public void

尝试侦听Kafka消费者并在事务中执行一些查询,并将其存储到JDBC数据存储。 执行一个查询后,我发现连接关闭错误。如果删除Transact()则不会出现此问题。但我的用例是在事务中使用kafka consumer的数据后执行多个查询,即执行并持久化数据库中的所有查询,或者如果在一个数据库中执行exeption,则不执行查询

StudentRouteBuilder.java-

@服务 公共类学生RouteBuilder扩展了RouteBuilder{

@Override
public void configure() throws Exception {

    from("kafka:my-poc?brokers=localhost:9092")
            .transacted()
            .process(exchange -> {
                List<String> query = new ArrayList<>();
                        query.add("Insert into Student values (12, 'Robby', 5)");
                        //query.add("Insert into Student values (12, 'Alice', 5)");
                exchange.getIn().setBody(query);
            }).to("jdbc:dataSource")
        .log("body saved in both");

}
@覆盖
public void configure()引发异常{
from(“kafka:my-poc?brokers=localhost:9092”)
.transactid()号
.流程(交换->{
列表查询=新建ArrayList();
添加(“插入学生价值观(12,'Robby',5)”;
//添加(“插入学生值(12,'Alice',5)”;
exchange.getIn().setBody(查询);
}).to(“jdbc:数据源”)
.log(“正文保存在两者中”);
}
}

Application.yml-

春天: 杰克逊: 属性命名策略:SNAKE_案例 数据源: url:jdbc:mysql://localhost:3306/test_db?autoReconnect=true 用户名:root 密码:Password@1 平台:mysql 驱动程序类名:com.mysql.cj.jdbc.driver

卡夫卡: 服务器:XXXX 引导服务器ttc ssl:XXXX 主题:XXXX

错误跟踪-

2021-05-25 23:13:01.096警告20785---[onsumer[my poc]]o.a.c.s.spi.TransactionErrorHandler:为(交换ID:47559BD6C12528D-0000000000000000上的消息ID:47559BD6C12528D-0000000000)捕获的事务回滚(0x2842c098)已重新交付(false):JDBC提交失败;嵌套异常为java.sql.SQLException:连接已关闭 2021-05-25 23:13:01.100警告20785---[onsumer[my poc]]o.a.camel.component.kafka.KafkaConsumer:处理过程中出错。交易所[47559BD6C12528D-0000000000000000]。原因:[org.springframework.transaction.TransactionSystemException-JDBC提交失败;嵌套异常为java.sql.SQLException:连接已关闭]

org.springframework.transaction.TransactionSystemException:JDBC提交失败;嵌套异常为java.sql.SQLException:连接已关闭 在org.springframework.jdbc.datasource.DataSourceTransactionManager.translateException(DataSourceTransactionManager.java:435)~[spring-jdbc-5.3.6.jar:5.3.6] 在org.springframework.jdbc.support.JdbcTransactionManager.translateException(JdbcTransactionManager.java:188)~[spring-jdbc-5.3.6.jar:5.3.6] 在org.springframework.jdbc.datasource.DataSourceTransactionManager.doCommit(DataSourceTransactionManager.java:336)~[spring-jdbc-5.3.6.jar:5.3.6] 在org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:743)~[spring-tx-5.3.6.jar:5.3.6] 在org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:711)~[spring-tx-5.3.6.jar:5.3.6] 在org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:152)~[spring-tx-5.3.6.jar:5.3.6] 在org.apache.camel.spring.spi.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:200)~[camel-spring-3.9.0.jar:3.9.0] 在org.apache.camel.spring.spi.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:155)~[camel-spring-3.9.0.jar:3.9.0] 在org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:123)~[camel-spring-3.9.0.jar:3.9.0] 在org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:132)~[camel-spring-3.9.0.jar:3.9.0] 在org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:388)~[camel-base-engine-3.9.0.jar:3.9.0] 在org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:107)~[camel-core-processor-3.9.0.jar:3.9.0] 在org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:181)~[camel-base-engine-3.9.0.jar:3.9.0] 在org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:62)~[camel-base-engine-3.9.0.jar:3.9.0] 在org.apache.camel.processor.Pipeline.process(Pipeline.java:167)~[camel-core-processor-3.9.0.jar:3.9.0] 在org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:388)~[camel-base-engine-3.9.0.jar:3.9.0] 在org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)~[camel-base-engine-3.9.0.jar:3.9.0] 在org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)~[camel-support-3.9.0.jar:3.9.0] 在org.apache.camel.component.kafka.KafkaConsumer$KafkaFetchRecords.doPollRun(KafkaConsumer.java:390)~[camel-kafka-3.9.0.jar:3.9.0] 在org.apache.camel.component.kafka.KafkaConsumer$KafkaFetchRecords.doRun(KafkaConsumer.java:273)~[camel-kafka-3.9.0.jar:3.9.0] 在org.apache.camel.component.kafka.KafkaConsumer$KafkaFetchRecords.run(KafkaConsumer.java:238)~[camel-kafka-3.9.0.jar:3.9.0] 在java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)~[na:na] 在java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)~[na:na] 在java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)~[na:na] 在java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)~[na:na] 在java.base/java.lang.Thread.run(Thread.java:834)~[na:na] 原因:java.sql.SQLException:连接已关闭 在com.zaxxer.hikari.pool.ProxyConnection$ClosedConnection.lambda$getClosedConnection$0(ProxyConnection.java:515)~[HikariCP-3.4.5.jar:na] 在com.sun.proxy.$Proxy94.commit(未知源)~[na:na] 位于com.zaxxer.hikari.pool.ProxyConnection.commit(ProxyConnection.java:387)~[