1.6. 事务和线程之间的关系
为了了解事务处理,非常感谢事务和线程之间的基本关系非常重要: 事务是特定于线程的。也就是说,当事务启动时,它会附加到特定的线程。(从技术上,创建 事务上下文 对象并与当前线程相关联)。此时,线程中的所有活动都会在这个事务范围内发生。其他线程中的活动 不会 属于这个事务的范围。但是,任何其他线程中的活动都可以在某些其他事务范围内。
这个事务和线程之间的关系意味着:
- 只要在单独的线程中创建每个 事务,应用程序就可以同时处理多个 事务。
-
注意在事务中创建子线程。如果您在事务中,并且您创建了一个新的线程池,例如通过调用
threads ()
Camel DSL 命令,新的线程 不在 原始事务范围内。 - 注意处理步骤,根据前面点上给出的相同原因,隐式创建新的线程。
-
事务范围通常不会跨越路由段扩展。也就是说,如果一个路由片段
以(JoinEndpoint)
结尾,另一个路由片段从(JoinEndpoint)
开始,这些路由片段 通常不 属于相同的事务。然而,有一些例外。
注意
有些高级事务管理器实现可让您自由地将事务上下文与线程分离和附加。例如,这样可以将事务上下文从一个线程移到另一个线程。在某些情况下,也可以将单个事务上下文附加到多个线程。