package com.lts.example.benchmark;

import com.lts.example.support.MasterChangeListenerImpl;
import com.lts.example.support.MemoryStatus;
import com.lts.jobtracker.JobTracker;
import com.lts.jobtracker.support.policy.OldDataDeletePolicy;

/**
 * @author Robert HG (254963746@qq.com) on 8/13/15.
 */
public class JobTrackerMain {

    public static void main(String[] args) {

//        final JobTracker jobTracker = new JobTracker();
//        // 节点信息配置
//        jobTracker.setRegistryAddress("zookeeper://127.0.0.1:2181");
////        jobTracker.setRegistryAddress("redis://127.0.0.1:6379");
//        jobTracker.setListenPort(35001); // 默认 35001
//        jobTracker.setClusterName("test_cluster");
//
//        jobTracker.addMasterChangeListener(new MasterChangeListenerImpl());
//
//        // 设置业务日志记录 mysql
//        jobTracker.addConfig("job.logger", "mysql");
//        // 任务队列用mysql
//        jobTracker.addConfig("job.queue", "mysql");
//        // mysql 配置
//         jobTracker.addConfig("jdbc.url", "jdbc:mysql://127.0.0.1:3306/lts");
//         jobTracker.addConfig("jdbc.username", "root");
//         jobTracker.addConfig("jdbc.password", "root");
//
//        jobTracker.setOldDataHandler(new OldDataDeletePolicy());
//        // 设置 zk 客户端用哪个， 可选 zkclient, curator 默认是 zkclient
////        jobTracker.addConfig("zk.client", "zkclient");
//        // 启动节点
//        jobTracker.start();

        final JobTracker jobTracker = new JobTracker();
        // 节点信息配置
        jobTracker.setRegistryAddress("zookeeper://127.0.0.1:2181");
        jobTracker.setClusterName("test_cluster");   // 三种节点都要保持一致
//        jobTracker.setListenPort(50001);
        // master 节点变化监听器，当有集群中只需要一个节点执行某个事情的时候，可以监听这个事件
        jobTracker.addMasterChangeListener(new MasterChangeListenerImpl());
        // 设置业务日志记录， 可选值: mongo, mysql , console
        jobTracker.addConfig("job.logger", "mongo");
        // 任务队列用mongo
        jobTracker.addConfig("job.queue", "mongo");
        // mongo 配置
        jobTracker.addConfig("mongo.addresses", "127.0.0.1:27017");     // 多个地址用逗号分割
        jobTracker.addConfig("mongo.database", "lts");
        // 这个是对于 返回给客户端 任务的 老数据删除策略
        jobTracker.setOldDataHandler(new OldDataDeletePolicy());
        // 设置 zk 客户端用哪个， 可选 zkclient(默认), curator
        jobTracker.addConfig("zk.client", "zkclient");
        // 启动节点
        jobTracker.start();
        MemoryStatus.print();
        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
            @Override
            public void run() {
                jobTracker.stop();
            }
        }));
    }
}
