我正在使用apache ignite,其中多个客户端节点(spring引导应用程序)正在运行。我想获得锁在一个缓存/表项选择&自动更新,使其他进程无法更新它。类似于MYSQLSELECT FOR UPDATE
<标题>Usecase描述我在缓存/表中有记录TO_BE_PROCESSED的地位。我的cron作业选择记录并更新IN_PROGRESS中的记录根据业务逻辑对条目进行状态和处理。因为我有多个客户端实例正在运行。我不想对每个条目重复处理。
标题>点燃2。x没有SQL事务,所以没有SELECT FOR UPDATE
,但它在使用键值API时支持事务。你需要这样做:
try (var tx = ignite.transactions().txStart()) {
cache.get(recordToUpdate1);
cache.get(recordToUpdate2);
// ... do processing ...
cache.put(recordToUpdate1, value1);
cache.put(recordToUpdate2, value2);
tx.commit();
}