10.7. 批处理


批处理允许原子性以及事务的一些特征,但不包括完整的 JTA 或 XA 功能。批处理通常比一整套交易更轻、更便宜。

提示

通常而言,每当交易中唯一参与者是数据网格集群时,均应使用批处理 API。另一方面,每当事务涉及多个系统时,都应使用 JTA 事务(涉及 TransactionManager)。例如,考虑了交易的"Hello world!":将资金从一个银行帐户转移到另一个银行帐户。如果两个帐户都存储在 Data Grid 中,则可以使用批处理。如果一个帐户位于数据库中,另一个是 Data Grid,则需要分布式事务。

注意

您不必 定义事务管理器来使用批处理。

10.7.1. API

将缓存配置为使用批处理后,您可以通过调用 Cache 上的 startBatch ()endBatch () 来使用它。例如,

Cache cache = cacheManager.getCache();
// not using a batch
cache.put("key", "value"); // will replicate immediately

// using a batch
cache.startBatch();
cache.put("k1", "value");
cache.put("k2", "value");
cache.put("k2", "value");
cache.endBatch(true); // This will now replicate the modifications since the batch was started.

// a new batch
cache.startBatch();
cache.put("k1", "value");
cache.put("k2", "value");
cache.put("k3", "value");
cache.endBatch(false); // This will "discard" changes made in the batch

10.7.2. 批处理和 JTA

在后台后,批处理功能启动 JTA 事务,并且该范围内的所有调用都与其关联。为此,它使用非常简单(如没有恢复)内部 TransactionManager 实现。使用批处理时,您将获得:

  1. 在批处理完成前,您要在调用期间获取锁定
  2. 更改都会在批处理过程中在批处理中复制。减少批处理中每个更新的复制聊天。
  3. 如果使用同步复制或无效,则复制/无效会导致批处理回滚。
  4. 所有事务相关的配置也适用于批处理。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.