我正在使用igniteDataStreamer,并想知道是否可以使用来自闭包的事务。
不幸的是,当从不同的IgniteDataStreamer线程运行同一记录以在缓存中更新(StreamReceiver中的receive()方法)时,即使CacheConfiguration atomicityMode是TRANSACTIONAL,Ignite也不会抛出任何TransactionOptimisticException。
try (Transaction t = ignite.transactions().txStart(TransactionConcurrency.OPTIMISTIC, TransactionIsolation.SERIALIZABLE)) {
try {
cache.putAll(update);
t.commit();
catch (TransactionOptimisticException toe) {
LOG.error("TransactionOptimisticException Could not put all the profiles",toe);
}
}
答案 0 :(得分:1)
数据流不是交易性的。要在单个事务中执行更新,必须在同一节点和同一线程上启动它们。有关更多详细信息和示例,请参阅此处:https://apacheignite.readme.io/docs/transactions