package com.vip.saturn.job.sharding.listener; import com.vip.saturn.job.sharding.node.SaturnExecutorsNode; import com.vip.saturn.job.sharding.service.NamespaceShardingService; import org.apache.curator.framework.recipes.cache.TreeCacheEvent; /** * @author hebelala */ public class JobServersTriggerShardingListener extends AbstractTreeCacheListener { private String jobName; private NamespaceShardingService namespaceShardingService; public JobServersTriggerShardingListener(String jobName, NamespaceShardingService namespaceShardingService) { this.jobName = jobName; this.namespaceShardingService = namespaceShardingService; } @Override public void childEvent(TreeCacheEvent.Type type, String path, String nodeData) throws Exception { if(isJobServerStatus(path)) { String executorName = SaturnExecutorsNode.getJobServersExecutorNameByStatusPath(path); switch (type) { case NODE_ADDED: namespaceShardingService.asyncShardingWhenJobServerOnline(jobName, executorName); break; case NODE_REMOVED: namespaceShardingService.asyncShardingWhenJobServerOffline(jobName, executorName); break; default: } } } private boolean isJobServerStatus(String path) { return path.matches(SaturnExecutorsNode.getJobServersExecutorStatusNodePathRegex(jobName)); } }