是否可以通过并发多线程从TransactionalMap
访问TransactionContext
。
已将xaResource
征用到现有事务中,使用transactionalContext
来获取TransactionalMap
,并发*transMap,put(K,V)*
,这使我异常。
com.hazelcast.transaction.TransactionException:
事务无法获取密钥的锁定。 HazelCast版本:3.6.3。
报名:
HazelcastXAResource xaResource = hazelcastInstance.getXAResource();
Transaction transaction = userTransactionManager.getTransaction();
transaction.enlistResource(xaResource);
TransactionalMap:
TransactionalMap<String,Serializable> transactionalMap=hcTransactionalContext.getMap("UUID");
Map<K,V> map = transactionalMap.get("uuid");
map.put(K,V);
例外1:
com.hazelcast.transaction.TransactionException: Transaction couldn't obtain lock for the key: uuid
例外2:
There is no suitable serializer for class com.hazelcast.map.impl.tx.TransactionalMapProxy
最佳答案
Hazelcast中的事务被设计为通过单个线程工作,因此不可能同时访问事务中的TransactionalMap
。
如果您解释了用例,也许我们可以想到一些更好的方法来实现呢?