package com.vip.saturn.job.sharding.listener; import org.apache.curator.framework.recipes.cache.TreeCacheEvent; import com.vip.saturn.job.sharding.node.SaturnExecutorsNode; import com.vip.saturn.job.sharding.service.NamespaceShardingService; /** * Created by xiaopeng.he on 2016/7/12. */ public class LeadershipElectionListener extends AbstractTreeCacheListener { private NamespaceShardingService namespaceShardingService; public LeadershipElectionListener(NamespaceShardingService namespaceShardingService) { this.namespaceShardingService = namespaceShardingService; } @Override public void childEvent(TreeCacheEvent.Type type, String path, String nodeData) throws Exception { if(isLeaderRemove(type, path)) { namespaceShardingService.leaderElection(); } } private boolean isLeaderRemove(TreeCacheEvent.Type type, String path) { return type == TreeCacheEvent.Type.NODE_REMOVED && SaturnExecutorsNode.LEADER_HOSTNODE_PATH.equals(path); } }