SyncZookeeperTask.java 1.9 KB
Newer Older
Z
zengqiao 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
package com.xiaojukeji.know.streaming.km.task.metadata;

import com.didiglobal.logi.job.annotation.Task;
import com.didiglobal.logi.job.common.TaskResult;
import com.didiglobal.logi.job.core.consensual.ConsensualEnum;
import com.didiglobal.logi.log.ILog;
import com.didiglobal.logi.log.LogFactory;
import com.xiaojukeji.know.streaming.km.common.bean.entity.cluster.ClusterPhy;
import com.xiaojukeji.know.streaming.km.common.bean.entity.config.ZKConfig;
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.Result;
import com.xiaojukeji.know.streaming.km.common.utils.ConvertUtil;
import com.xiaojukeji.know.streaming.km.common.bean.entity.zookeeper.ZookeeperInfo;
import com.xiaojukeji.know.streaming.km.core.service.zookeeper.ZookeeperService;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;


@Task(name = "SyncZookeeperTask",
        description = "ZK信息同步到DB",
        cron = "0 0/1 * * * ? *",
        autoRegister = true,
        consensual = ConsensualEnum.BROADCAST,
        timeout = 2 * 60)
public class SyncZookeeperTask extends AbstractAsyncMetadataDispatchTask {
    private static final ILog log = LogFactory.getLog(SyncZookeeperTask.class);

    @Autowired
    private ZookeeperService zookeeperService;

    @Override
    public TaskResult processClusterTask(ClusterPhy clusterPhy, long triggerTimeUnitMs) {
        Result<List<ZookeeperInfo>> infoResult = zookeeperService.listFromZookeeper(
                        clusterPhy.getId(),
                        clusterPhy.getZookeeper(),
                        ConvertUtil.str2ObjByJson(clusterPhy.getZkProperties(), ZKConfig.class)
        );

        if (infoResult.failed()) {
            return new TaskResult(TaskResult.FAIL_CODE, infoResult.getMessage());
        }

        zookeeperService.batchReplaceDataInDB(clusterPhy.getId(), infoResult.getData());

        return TaskResult.SUCCESS;
    }
}