Реализация Factory:
Код: Выделить всё
public class TransactionManagerFactory implements Factory {
private static final long serialVersionUID = 1L;
private transient IgniteCache igniteCache;
public TransactionManagerFactory(IgniteCache igniteCache) {
this.igniteCache=igniteCache;
}
@Override
public TransactionManager create() {
return this.igniteCache.getTransactionManager();
}
}
Код: Выделить всё
TransactionConfiguration txConfiguration=new TransactionConfiguration();
txConfiguration.setDeadlockTimeout(acquireTimeout);
txConfiguration.setDefaultTxIsolation(TransactionIsolation.READ_COMMITTED);
txConfiguration.setDefaultTxConcurrency(TransactionConcurrency.PESSIMISTIC);
TransactionManagerFactory txFactory=new TransactionManagerFactory(this);
txConfiguration.setTxManagerFactory(txFactory);
this.clientConfig.setTransactionConfiguration(txConfiguration);
Код: Выделить всё
CacheConfiguration cacheCfg = new CacheConfiguration(this.name);
cacheCfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
cacheCfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
this.cache = this.instance.getOrCreateCache(cacheCfg);
Instance.transactions().tx() возвращает значение null , а transactionManager.getTransaction() возвращает TransactionImpl{xid=Xid{formatId=1, globalTransactionId=8EA3F99497B60948C0E22AEBA1F54C46000000000000002,branchQualifier=8EA3F99497B60948C0E22AEBA1F54C46000 0000000000002}, status=ACTIVE
И всякий раз, когда транзакция повторяется назад, записанные элементы сохраняются в кеше.
Кроме того, TransactionManagerFactory.create никогда не выполняется.
Как я могу правильно интегрировать внешний менеджер транзакций с кешем Ignite?
Подробнее здесь: https://stackoverflow.com/questions/660 ... is-ignored
Мобильная версия