問題タブ [infinispan-9]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jboss - JCache として構成されている場合に、Infinispan キャッシュから Advanced Cache を取得したり、Transaction Manager を構成したりする方法を教えてください。
JCache キャッシュがあり、キャッシング プロバイダーは Infinispan です。トランザクションキャッシュとして使用する必要があります。Infinispan で Transaction Manager を構成すると、cache.getAdvancedCache().getTransactionManager() として取得できます。
私のキャッシュは JCache であるため、これを行うオプションはありません。キャッシュからトランザクション マネージャーを取得します。これを達成する方法はありますか?
infinispan のドキュメントによると、JSR-107 に完全に準拠しています: https://infinispan.org/docs/stable/user_guide/user_guide.html#jcache_jsr_107
java - 複数のスレッドを使用して同じキャッシュから読み取り中に異なる値を取得する
infinispan キャッシュを使用してカウンター システムを実装しようとしています。複数のスレッドが同じキーにアクセスし、そのキーに対して値をインクリメントしようとしています。
カウンター操作は lock(key) で開始されるため、他のスレッドはそれに書き込むことができません。ロックを取得したスレッドは、get(key) を実行し、値をインクリメントして、同じキーに対して戻します。
ロックの解放を待っていた別のスレッドが get(key) を呼び出します。get(KEY) は、予想される更新されたカウンター値ではなく、以前の値を返します。
各スレッドのキャッシュに対して新しいトランザクションを開始しています。トランザクションは自動コミットされます。
自動コミットを使用して、プット後に明示的にコミットしようとしました。また、実行するたびにファイルの永続性とデータベースの永続性をクリアするようにしました。
これは私の infinispan キャッシュ構成です。
期待される結果は、別のスレッドが同じ値を取得しようとしたときに、スレッドによって行われた値の更新が反映されることです。
私の最善の推測は、スレッドごとに作成されるトランザクションで何かをしなければならないということです。
実際のコードを共有することはできませんが、次のコードはプロセスを概算しています。お役に立てれば