없음은 localKeySet 정렬 단지 일반 설정되어 있지 않습니다. 순서를 유지하려면 TreeMap 대신 Queue를 사용하는 것을 선호합니다 (추가 할 TimeStamp 대신 다른 매개 변수를 기반으로 정렬하지 않는 한). 그리고이 Queue를 제어하기 위해 localEntryListener를 구현하십시오.
또 다른 옵션은 TreeSet을 사용하는 것입니다.
public class HazelcastNode {
private static Queue localEntryQueue = new LinkedList<>();
public HazelcastNode(){
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
hz.getMap("hzMap").addLocalEntryListener(new MyLocalMapListner());
}
public static void main(String[] args){
HazelcastNode node = new HazelcastNode();
//Get the Head of the queue which will be the oldest local entry
HazelcastNode.localEntryQueue.peek();
}
private class MyLocalMapListner implements MapListener,EntryAddedListener,
EntryRemovedListener,
EntryUpdatedListener,
EntryEvictedListener,
EntryExpiredListener{
@Override
public void entryAdded(EntryEvent entryEvent) {
HazelcastNode.localEntryQueue.add(entryEvent.getKey());
}
@Override
public void entryEvicted(EntryEvent entryEvent) {
HazelcastNode.localEntryQueue.remove(entryEvent.getKey());
}
@Override
public void entryExpired(EntryEvent entryEvent) {
HazelcastNode.localEntryQueue.remove(entryEvent.getKey());
}
@Override
public void entryRemoved(EntryEvent entryEvent) {
HazelcastNode.localEntryQueue.remove(entryEvent.getKey());
}
@Override
public void entryUpdated(EntryEvent entryEvent) {
}
}
}
답장을 보내 주셔서 감사합니다. 처음에는 유사한 디자인을 사용했지만 정렬이 필요했기 때문에 TreeSet (문제의 오타가 수정 됨)을 사용했습니다. 그러나 이미 준비된 데이터 구조로 작업 할 수 있다면 최적화 방법을 생각하고 있습니다. 로컬 맵은 ConcurrentHashMaps입니다. Hazelcast가 확장 메커니즘의 일부를 제공 할 것이라고 기대했는데,이를 통해 사용자 정의 맵을 '플러그인'할 수있었습니다. –
Hazelcast에서 사용자 정의 맵/키 세트 구현을 플러그인 할 수 있다고 생각하지 않습니다. 또한 Hazelcast는 실제 참조가 아닌 keySet/값의 사본을 반환합니다. –