1.6. 事务和线程之间的关系

为了理解事务处理,感谢交易和线程之间的基本关系:交易是特定于线程的 ,交易是特定于线程的。也就是说,当事务启动时,它会附加到特定线程。(技术上,创建 事务上下文 对象并与当前线程关联)。从此点到事务结束,该线程中的所有活动都会在这个事务范围内发生。任何其它线程中的活动 都不会 在这个事务范围内。但是,任何其他线程中的活动都可能属于某个其他事务的范围。

事务和线程之间的这种关系意味着:

  • 只要在单独的线程中创建每个 事务,应用程序就可以同时处理多个 事务。
  • 注意在事务中创建子线程。如果您在事务的中间,并且您创建一个新的线程池,例如调用 thread () Camel DSL 命令,新的线程 不在 原始事务范围内。
  • 注意处理步骤在前面的步骤中隐式创建新的线程
  • 事务范围通常不会跨路由段进行扩展。也就是说,如果一个路由片段 以 (JoinEndpoint) 结尾,另一个路由片段 从(JoinEndpoint) 开始,这些路由片段 通常不 属于同一个事务。然而,有一些例外情况。
注意

某些高级交易管理器实施可让您自由分离和附加事务上下文,以及从位于 的线程中分离和附加事务上下文。例如,可以将事务上下文从一个线程移动到另一个线程。在某些情况下,也可以将单一事务上下文附加到多个线程。