이전 단계에서 2개의 node에서 cluster를 성공적으로 시작했다. 하지만, cluster에 대한 lifecycle과 2개의 node가 동일한 operation을 효과적으로 수행하도록 거의 제어하지 못했다. 이번 단계에서는 cluster events들에 대해서 들여다보고, cluster topology가 변경될 때, cluster events들이 예상대로 발생한 것인지를 어떻게 확신할 수 있도록 돕는지 알아볼 것이다. 특정 events를 listen하기 위하여 listener를 생성하여 CacheManager에 추가해야 한다. Infinispan listener는 간단하게 @Listener annotation으로 구현할 수 있다. 알고 싶은 events에 대해서 annotation을 추가하면 notify를 받을 수 있다. 예를 들면 다음과 같다.
@Listener
public class ClusterListener {
@ViewChanged
public void viewChanged(ViewChangedEvent event) {
}
}
위의 예제에서는 cluster에 node가 참여하거나 나갈 때마다 notify를 받을 것이다. Event object는 이전 topology에 대한 상세한 정보와 새로운 topology에 대한 상세 정보를 담고 있다. 우리의 WeatherApp에서는 2개의 CountdownLatch Instance와 함께 topology 정보를 사용할 것이다. 하나는 초기 cluster를 구성하는 node의 개수가 될 때까지 기다리고, 다른 하나는 원래의 coordinator node가 cluster를 나갔을 때, node shutdown하도록 허용한다.
git checkout -f step-6
mvn clean package exec:exec # from terminal 1
mvn exec:exec # from terminal 2
이번에는 첫번째 시작한 노드는 job을 수행하기 전에 두번째 node가 cluster에 참여하기까지 기다릴 것이다. 다음 단계에서는 또다른 형태의 event인 Cache Events에 대해서 살펴볼 것이다.
댓글을 달아 주세요
댓글 RSS 주소 : http://www.yongbi.net/rss/comment/673