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

Apache Ignite容器托管事务支持与多节点缓存写入异常咨询

问题1:Apache Ignite是否默认支持参与容器管理事务

Apache Ignite 默认不支持 自动参与容器管理事务。Ignite自身实现了独立的事务处理模型,默认未与Java EE/Spring生态的容器事务上下文做自动绑定,如需让Ignite操作参与容器全局事务,需要显式配置JTA事务集成,将Ignite事务管理器注册到容器的JTA事务协调器中,同时开启缓存的事务同步配置。

问题2:多节点场景下异常的诱因

该异常的核心原因是跨节点执行的CacheStore逻辑未绑定容器事务与EntityManager上下文,具体逻辑如下:

  • 单节点运行时,所有缓存操作的处理逻辑都在发起请求的业务线程上执行,该线程已经绑定了Spring注入的EntityManager和容器事务上下文,所以调用em.merge可以正常执行,缓存落库均正常。
  • 当第二个节点加入集群后,Ignite会根据缓存键的亲和性规则,将不同主键的分片分配到不同节点作为主分片。此时你调用缓存写入接口时,若对应主键的主分片落在第二个节点,CacheStore的write方法会在第二个节点的Ignite内置工作线程上执行,该线程不存在业务侧的Spring容器事务上下文,也没有绑定可用的EntityManager实例,因此触发TransactionRequiredException异常。
  • 你观测到缓存读取、直接调用EntityManager读取正常的原因是:Ignite缓存层的写入操作本身已经执行成功,只有CacheStore落库的步骤失败触发了事务回滚,读取时命中了缓存中的已写入数据;而你直接调用EntityManager的操作是在业务线程上执行,本身持有事务上下文因此可以正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:45:04