ピークを許可する同時優先キューをシミュレートし、任意のインデックスから優れたパフォーマンスで削除するオープン ソース (または独自の) フレームワークがあるかどうか疑問に思っていました。
現在ConcurrentSkipList
、JDK で利用できるものを使用していますが、基本的にはこれを複数の JVM で共有する必要があります。
最も難しい部分は、キューをポーリングするときに次のようなことをしていることです。
List<Entry> dequeued = new ArrayList<>(thisManyIwant);
for(Entry entry : queue){
if(dequeued.size()>=thisManyIwant) break;
if(predicate.apply(entry)){
// Entry satisfies criteria
if(queue.remove(entry){
// OK, got it
dequeued.add(entry);
}else{
// damn, somebody took it before I could :(
}
}else{
// It's not something I want, move on to the next one.
}
}
return dequeued;
一部の分散キャッシュではクエリを実行できますが、この操作はパフォーマンスが集中するため、キャッシュを大量にクエリすることが適切かどうかはわかりませんでした。
誰かそのようなことを聞いたことがありますか?