关于SpringMvc Zookeeper的问题 5C

我现在有一个SpringMvc的web项目。我现在的需求是监听zookeeper的节点变化。我需要怎么实现呢???

5个回答

你可以在配置文件里直接注册zk啊,然后在程序里面获取连接。
我的这个是dubbo和zk,配置

<dubbo:application name="${dubbo.service.name}" owner="Telematcis" organization="adt"/>

<!-- 使用zookeeper注册中心 -->
<dubbo:registry protocol="zookeeper" address="${zk.server}" timeout="30000"/>

<!--uncomment this if you want to test dubbo's monitor-->
<!--<dubbo:monitor protocol="registry"/>-->

<!-- 使用dubbo协议 -->

<!-- optimizer="com.adt.front.yang.rpc.protocol.SerializationOptimizerImpl"
extension="com.adt.framework.monitor.cat.dubbospi.DubboCatCrossFilter"
/>-->

<!-- 设定dubbo默认参数 -->
<dubbo:provider timeout="50000" retries="1" />
<dubbo:consumer timeout="50000" retries="1" />

    这里配置监听的RPC暴露的接口
     <dubbo:reference id="customerService"
                 interface="com.adt.service.yang.rpc.CustomerService" check="false" version="0.0.0.1"/>
qq_16873039
qq_16873039 用curator这个框架监听你要的节点,不管理删除,新增什么的 都会收到通知
大约 2 年之前 回复
bobingling
bobingling 你可以在配置文件里直接注册zk啊,然后在程序里面获取连接
大约 2 年之前 回复
ljl_90
ljl_90 等待高手 学习中
大约 2 年之前 回复
qq_24715811
麻麻哈哈 这个我不知道
大约 2 年之前 回复
ljl20169
BaidunJ 回复繁华穿越现实: 学习学习
大约 2 年之前 回复
weixin_41496665
weixin_41496665 public class HelloZK { /** * Logger for this class */ private static final Logger logger = Logger.getLogger(HelloZK.class); private static final String CONNECTSTRING = "192.168.67.167:2181"; private static final String PATH = "/qqqq"; private static final int SESSION_TIMEOUT = 50*1000;
大约 2 年之前 回复
qq_34701469
杨_5426 回复繁华穿越现实: 一个demo,java客户端操作zk的,不知道是不是你需要的
大约 2 年之前 回复
dong_18383219470
繁华穿越现实 我不是使用dubbo,只是单纯的想实分布式环境下,配置文件同步。
大约 2 年之前 回复

public class HelloZK
{
   /**
   * Logger for this class
   */
   private static final Logger logger = Logger.getLogger(HelloZK.class);
   
   private static final String CONNECTSTRING = "192.168.67.167:2181";
   private static final String PATH = "/qqqq";
   private static final int    SESSION_TIMEOUT = 50*1000;
   
   
   
   public ZooKeeper startZK() throws IOException
   {
       return new ZooKeeper(CONNECTSTRING, SESSION_TIMEOUT, new Watcher() {
          @Override
          public void process(WatchedEvent event)
          {
          }
       });
   }
   
   public void stopZK(ZooKeeper zk) throws InterruptedException
   {
       if(zk != null)
       {
          zk.close();
       }
   }
   
   public void createZNode(ZooKeeper zk,String path,String nodeValue) throws KeeperException, InterruptedException
   {
       zk.create(path,nodeValue.getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);
   }
   
   public String getZNode(ZooKeeper zk,String path) throws KeeperException, InterruptedException
   {
       byte[] byteArray = zk.getData(path, false, new Stat());
       return new String(byteArray);
   }

   public static void main(String[] args) throws IOException, KeeperException, InterruptedException
   {
       HelloZK hello = new HelloZK();
       
       ZooKeeper zk = hello.startZK();
       
       Stat stat = zk.exists(PATH, false);
       
       if(stat == null)
       {
          hello.createZNode(zk, PATH, "zk1014");
          String result = hello.getZNode(zk, PATH);
          System.out.println("**********result: "+result);
       }else{
          System.out.println("***********znode has already ok***********");
       }
       
       hello.stopZK(zk);
   }
}
 

qq_34701469
杨_5426 回复繁华穿越现实: public ZooKeeper startZK() throws IOException    {        return new ZooKeeper(CONNECTSTRING, SESSION_TIMEOUT, new Watcher() {           @Override           public void process(WatchedEvent event)           {           }        });    }
大约 2 年之前 回复
qq_34701469
杨_5426 回复繁华穿越现实: 你知道watch吗? zk监听,根据watch就知道zk的节点服务变动了
大约 2 年之前 回复
dong_18383219470
繁华穿越现实 这个客户端我也有,也实现了NodeCacheListener接口,我现在是SpringMvc 如何监听zookeeper的状态变化。有点迷糊了。
大约 2 年之前 回复

估计很难实现,没用过,不好意思

回复繁华穿越现实: 一个demo,java客户端操作zk的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问