2017-06-04 14 views
0

私はigniteDataStreamerを使用しており、クロージャからのトランザクションを使用できるかどうかを知りたいと思います。トランザクションからのIgniteトランザクションDataStream Receiverはサポートされていませんか?

残念ながら、CacheRefigiverのキャッシュ(receive()メソッド)で更新する同じレコードの異なるIgniteDataStreamerスレッドから実行すると、IgniteはCacheConfiguration atomicityModeがTRANSACTIONALであっても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); 
      } 
     } 

答えて

1

データストリーマーはトランザクションではありません。単一のトランザクションで更新を実行するには、同じノードと同じスレッドで更新を開始する必要があります。詳細については、ここをクリックしてください:https://apacheignite.readme.io/docs/transactions

+0

私のアプリケーションがクライアントモードで実行されている場合、IgniteはもうreceiveメソッドでTransactionOptimisticExceptionをスローしません。理由を説明してください。 –

+0

は、igniteインスタンスの代わりにignitetransactionsを送信していた理由があります。 –

関連する問題