canal position监控

package utils;

import java.util.List;

import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.exception.ZkMarshallingError;
import org.I0Itec.zkclient.serialize.SerializableSerializer;
import org.I0Itec.zkclient.serialize.ZkSerializer;
import org.apache.commons.io.Charsets;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.ParserConfig;

public class ZKUtil {

    public static void main(String[] args) {
//        ZkClient zkClient = new ZkClient("IP:2181",3000,3000,new SerializableSerializer());
        ZkClient zkClient = new ZkClient("IP:2181",3000,3000);
        zkClient.setZkSerializer( new MyZkSerializer());  //序列化问题 https://www.cnblogs.com/expiator/p/9943756.html

        String path = "/otter/canal/destinations";
        Object t = zkClient.readData(path);
        List<String> dirs = zkClient.getChildren(path);
        for(String tmp: dirs){
                 System.out.println(tmp);
//                 List<String> subDestinations =  zkClient.getChildren(path + "/" +tmp + "/1001/cursor");
//                 byte[] b = zkClient.getData(path + "/" +tmp + "/1001/cursor", null, null);
                 String o = (String) zkClient.readData(path + "/" +tmp + "/1001/cursor");
                  System.out.println(o);

                  //autoType is not support 异常
                  ParserConfig.getGlobalInstance().setAutoTypeSupport(true);                                          // https://blog.csdn.net/zl1zl2zl3/article/details/81477043
                 JSONObject jsonObj = JSON.parseObject(o);
                
                 JSONObject ob = (JSONObject) jsonObj.get("postion");
                 Long position = ob.getLong("timestamp");
                 System.out.println(position);
                 Long now = System.currentTimeMillis();
                 
                 if( Math.abs(now - position) > 10000){
                     System.out.println(tmp + " EXCEPTION !");
                 }else{
                     System.out.println(tmp + " now - position : " + (now - position));
                 }

        }
    }

}
 class MyZkSerializer implements ZkSerializer {
    /**
     * 序列化,将对象转化为字节数组
     */
    public byte[] serialize(Object obj) throws ZkMarshallingError {
        return String.valueOf(obj).getBytes(Charsets.UTF_8);
    }

    /**
     * 反序列化,将字节数组转化为UTF_8字符串
     */
    public Object deserialize(byte[] bytes) throws ZkMarshallingError {
        return new String(bytes, Charsets.UTF_8);
    }
}
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值