package com.hqyg.disjob.register.utils; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import com.hqyg.disjob.register.rpc.NotifyListener; import com.hqyg.disjob.register.rpc.ZookeeperRegistry; import com.hqyg.disjob.rpc.client.HURL; /** * <pre> * * File: ZooKeeperRegistryUtils.java * * Copyright (c) 2016, globalegrow.com All Rights Reserved. * * Description: * zoopkeeperRegister是一个单例,多个地方都要用,做一个统一的入口获取 * * Revision History * Date, Who, What; * 2016年5月30日 Disjob Initial. * * </pre> */ @Service("zooKeeperRegistryUtils") public class ZooKeeperRegistryUtils{ public static ZookeeperRegistry zookeeperRegistry; public ZookeeperRegistry getZookeeperRegistry(){ return zookeeperRegistry; } @Resource public void setZookeeperRegistry(ZookeeperRegistry zookeeperRegistry){ ZooKeeperRegistryUtils.zookeeperRegistry = zookeeperRegistry; } /** * 消息通知,当子节点有变化时候会触发通知. * * @param refUrl * @param listener * @param urls */ public static void notify(HURL refUrl, NotifyListener listener, List<HURL> urls) { if (listener == null || urls == null) { return; } List<HURL> curls = ZookeeperRegistry.subscribedCategoryResponses.get(refUrl); synchronized (ZookeeperRegistry.subscribedCategoryResponses) { if (CollectionUtils.isEmpty(curls)) { curls = new ArrayList<HURL>(); } curls.clear(); curls.addAll(urls);//这里直接添加不做是否存在判断,因为urls已经代表所有子节点的最新值 ZookeeperRegistry.subscribedCategoryResponses.put(refUrl,curls); } } }