Package com.taobao.metamorphosis.tools.shell

Source Code of com.taobao.metamorphosis.tools.shell.BrokerStatsTool

package com.taobao.metamorphosis.tools.shell;

import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Properties;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.lang.StringUtils;

import com.taobao.metamorphosis.client.MetaClientConfig;
import com.taobao.metamorphosis.client.MetaMessageSessionFactory;
import com.taobao.metamorphosis.network.BooleanCommand;
import com.taobao.metamorphosis.network.StatsCommand;
import com.taobao.metamorphosis.tools.utils.CommandLineUtils;
import com.taobao.metamorphosis.tools.utils.StringUtil;
import com.taobao.metamorphosis.utils.ResourceUtils;
import com.taobao.metamorphosis.utils.ZkUtils.ZKConfig;


/**
* Usage: stats -config configFilePath -item item
*
* @author apple
*
*/
public class BrokerStatsTool extends ShellTool {

    public BrokerStatsTool(PrintStream out) {
        super(out);
    }


    public static void main(String[] args) throws Exception {
        new BrokerStatsTool(System.out).doMain(args);
    }


    public BrokerStatsTool(PrintWriter out) {
        super(out);
    }


    @Override
    public void doMain(String[] args) throws Exception {
        CommandLine commandLine = getCommandLine(args);

        String item = commandLine.getOptionValue("item", null);
        String configFile = commandLine.getOptionValue("config");

        Properties props = ResourceUtils.getResourceAsProperties(configFile);
        MetaClientConfig metaClientConfig = new MetaClientConfig();
        String host = props.getProperty("hostName");
        if (StringUtils.isBlank(host)) {
            host = "localhost";
        }
        String serverUrl = "meta://" + host + ":" + props.getProperty("serverPort");
        metaClientConfig.setServerUrl(serverUrl);
        metaClientConfig.setZkConfig(initZkConfig(props));
        MetaMessageSessionFactory sessionFactory = new MetaMessageSessionFactory(metaClientConfig);

        sessionFactory.getRemotingClient().connect(serverUrl);
        sessionFactory.getRemotingClient().awaitReadyInterrupt(serverUrl);

        BooleanCommand resp =
                (BooleanCommand) sessionFactory.getRemotingClient().invokeToGroup(serverUrl, new StatsCommand(0, item));
        if (resp != null) {
            System.out.println(resp.getErrorMsg());
        }
        sessionFactory.shutdown();
    }


    private static ZKConfig initZkConfig(Properties serverProperties) throws IOException {
        final String zkConnect = serverProperties.getProperty("zk.zkConnect");
        final String zkRoot = serverProperties.getProperty("zk.zkRoot");
        if (!StringUtil.empty(zkConnect)) {
            final int zkSessionTimeoutMs = Integer.parseInt(serverProperties.getProperty("zk.zkSessionTimeoutMs"));
            final int zkConnectionTimeoutMs =
                    Integer.parseInt(serverProperties.getProperty("zk.zkConnectionTimeoutMs"));
            final int zkSyncTimeMs = Integer.parseInt(serverProperties.getProperty("zk.zkSyncTimeMs"));
            return setZkRoot(new ZKConfig(zkConnect, zkSessionTimeoutMs, zkConnectionTimeoutMs, zkSyncTimeMs), zkRoot);
        }
        else {
            return null;
        }
    }


    private static ZKConfig setZkRoot(final ZKConfig zkConfig2, final String zkRoot) {
        if (StringUtils.isNotBlank(zkRoot)) {
            zkConfig2.zkRoot = zkRoot;
        }
        return zkConfig2;
    }


    private CommandLine getCommandLine(String[] args) {
        Option itemOpt = new Option("item", true, "stats item");
        itemOpt.setRequired(false);
        Option configOpt = new Option("config", true, "start partition num");
        configOpt.setRequired(true);
        return CommandLineUtils.parseCmdLine(args, new Options().addOption(itemOpt).addOption(configOpt));
    }
}
TOP

Related Classes of com.taobao.metamorphosis.tools.shell.BrokerStatsTool

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.