2016-08-19 4 views
1

데이터베이스에 읽고 쓸 수있는 MapStore/Loader가있는 단일 멤버와 EntryAddedListener 수신기를 추가하는 클라이언트가 있습니다.hazelcast maploader listener

회원이 반송되면 MapLoader가 데이터베이스에서 데이터를 다시로드하기 때문에 리스너가 추가 된 항목이 표시됩니다.

그러나 이는 클라이언트에게 새로운 항목이 추가되었음을 나타내지 만 사실 실제로 노드는 부트 스트랩으로 인해 "추가"되고있는 것입니다.

기본적으로 MapLoader가지도를 부트 스트래핑 한 결과로 이러한 리스너가 시작되는 것을 원하지 않습니다. 나중에지도를 시작해야합니다.

EntryAdded 수신기를 시작하는 MapLoader 이벤트를 어떻게 중지합니까?

+0

다른 사용자가 문제를 이해하는 데 도움이되는 코드 예가 ​​있습니까? – Epu

답변

2

할 방법이 없습니다. MapLoader를 사용하여 항목을로드하는 것은 기본적으로 맵에 항목을 추가하는 것입니다.

당신이 할 수있는 일은지도가로드 된 후에 이러한 수신기를 추가하는 것입니다. loadingMode가 EAGER로 설정된 경우로드가 완전히 완료되면 쉽게 판단 할 수 있습니다.

로드가 완료 될 때까지 기다리려면 map.size() 작업을 호출 할 수 있습니다. 완료되면지도가 완전히 채워집니다.

+0

감사합니다. 네, 회원으로부터 열성적으로 열리게되었습니다. 그래도지도가 클라이언트 자체에서 완전히로드되었는지 확인할 수 있습니까? – hklf

+0

로드가 완료 될 때까지 기다리려면 map.size() 작업을 호출 할 수 있습니다. 완료되면지도가 완전히 채워집니다. –

+0

그래서 클라이언트 관점에서 클라이언트 분리 이벤트 콜백에서 리스너를 제거한 다음 클라이언트가 다시 연결될 때까지 대기해야하지만 size()를 호출 한 다음 리스너를 다시 추가해야합니까? – hklf