This is an automated email from the ASF dual-hosted git repository. yuanbo pushed a commit to branch TUBEMQ-421 in repository https://gitbox.apache.org/repos/asf/incubator-tubemq.git
commit 95654835a0de3326f2842a764356b4c0e3b32022 Author: gosonzhang <[email protected]> AuthorDate: Fri Dec 11 19:15:15 2020 +0800 [TUBEMQ-447] Add Broker-Admin Cli (#347) Co-authored-by: gosonzhang <[email protected]> --- bin/tubemq-broker-admin.sh | 40 ++++++++ pom.xml | 15 +++ tubemq-server/pom.xml | 6 +- .../server/broker/web/AbstractWebHandler.java | 8 +- .../server/broker/web/BrokerAdminServlet.java | 19 ++++ .../tubemq/server/common/fielddef/CliArgDef.java | 20 ++-- .../tubemq/server/common/fielddef/WebFieldDef.java | 12 ++- .../tubemq/server/common/utils/HttpUtils.java | 112 ++++++++++++++++++++ .../server/common/webbase/WebMethodMapper.java | 9 ++ .../server/master/web/action/screen/Webapi.java | 6 +- .../tubemq/server/tools/cli/CliAbstractBase.java | 2 +- .../tubemq/server/tools/cli/CliBrokerAdmin.java | 113 +++++++++++++++++++++ .../tubemq/server/tools/cli/CliConsumer.java | 6 +- .../tubemq/server/tools/cli/CliProducer.java | 6 +- 14 files changed, 355 insertions(+), 19 deletions(-) diff --git a/bin/tubemq-broker-admin.sh b/bin/tubemq-broker-admin.sh new file mode 100644 index 0000000..b1cedf5 --- /dev/null +++ b/bin/tubemq-broker-admin.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +if [ -z "$BASE_DIR" ] ; then + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + BASE_DIR=`dirname "$PRG"`/.. + + # make it fully qualified + BASE_DIR=`cd "$BASE_DIR" && pwd` + #echo "TubeMQ master is at $BASE_DIR" +fi +source $BASE_DIR/bin/env.sh +$JAVA $TOOLS_ARGS org.apache.tubemq.server.tools.cli.CliBrokerAdmin $@ diff --git a/pom.xml b/pom.xml index bfc2b64..f9b7342 100644 --- a/pom.xml +++ b/pom.xml @@ -335,6 +335,11 @@ <version>2.6</version> </dependency> <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + <version>4.5.2</version> + </dependency> + <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.1</version> @@ -436,6 +441,16 @@ <version>1.7</version> </dependency> <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-server</artifactId> + <version>9.4.31.v20200723</version> + </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-servlet</artifactId> + <version>9.4.31.v20200723</version> + </dependency> + <dependency> <groupId>org.ini4j</groupId> <artifactId>ini4j</artifactId> <version>0.5.1</version> diff --git a/tubemq-server/pom.xml b/tubemq-server/pom.xml index a4b6d39..985a166 100644 --- a/tubemq-server/pom.xml +++ b/tubemq-server/pom.xml @@ -185,14 +185,16 @@ <artifactId>commons-cli</artifactId> </dependency> <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + </dependency> + <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> - <version>9.4.31.v20200723</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-servlet</artifactId> - <version>9.4.31.v20200723</version> </dependency> <dependency> <groupId>junit</groupId> diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/AbstractWebHandler.java b/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/AbstractWebHandler.java index b44d88c..aece762 100644 --- a/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/AbstractWebHandler.java +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/AbstractWebHandler.java @@ -17,9 +17,11 @@ package org.apache.tubemq.server.broker.web; +import static org.apache.tubemq.server.common.webbase.WebMethodMapper.getRegisteredWebMethod; import static org.apache.tubemq.server.common.webbase.WebMethodMapper.getWebApiRegInfo; import static org.apache.tubemq.server.common.webbase.WebMethodMapper.registerWebMethod; import java.io.IOException; +import java.util.List; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -42,6 +44,10 @@ public abstract class AbstractWebHandler extends HttpServlet { doPost(req, resp); } + public List<String> getSupportedMethod() { + return getRegisteredWebMethod(); + } + @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { @@ -56,7 +62,7 @@ public abstract class AbstractWebHandler extends HttpServlet { WebApiRegInfo webApiRegInfo = getWebApiRegInfo(true, method); if (webApiRegInfo == null) { strBuffer.append("{\"result\":false,\"errCode\":400,\"errMsg\":\"") - .append("Unsupported method ").append(method).append("}"); + .append("Unsupported method ").append(method).append("\"}"); } else { strBuffer = (StringBuilder) webApiRegInfo.method.invoke(webApiRegInfo.webHandler, req); } diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/BrokerAdminServlet.java b/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/BrokerAdminServlet.java index ab43c2e..dfb8b2d 100644 --- a/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/BrokerAdminServlet.java +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/BrokerAdminServlet.java @@ -68,6 +68,25 @@ public class BrokerAdminServlet extends AbstractWebHandler { // manual set offset innRegisterWebMethod("admin_manual_set_current_offset", "adminManualSetCurrentOffSet"); + // get all registered methods + innRegisterWebMethod("admin_get_methods", + "adminQueryAllMethods"); + } + + public StringBuilder adminQueryAllMethods(HttpServletRequest req) throws Exception { + int index = 0; + List<String> methods = getSupportedMethod(); + StringBuilder sBuilder = new StringBuilder(1024); + sBuilder.append("{\"result\":true,\"errCode\":0,\"errMsg\":\"Success!\",\"dataSet\":["); + for (index = 0; index < methods.size(); index++) { + if (index > 0) { + sBuilder.append(","); + } + sBuilder.append("{\"id\":").append(index + 1) + .append(",\"method\":\"").append(methods.get(index)).append("\"}"); + } + sBuilder.append("],\"totalCnt\":").append(index + 1).append("}"); + return sBuilder; } /*** diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/common/fielddef/CliArgDef.java b/tubemq-server/src/main/java/org/apache/tubemq/server/common/fielddef/CliArgDef.java index abb2e2a..2e39f2f 100644 --- a/tubemq-server/src/main/java/org/apache/tubemq/server/common/fielddef/CliArgDef.java +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/common/fielddef/CliArgDef.java @@ -30,12 +30,12 @@ public enum CliArgDef { MASTERSERVER(null, "master-servers", "String: format is master1_ip:port[,master2_ip:port]", "The master address(es) to connect to."), - MASTERURL(null, "master-url", - "String: format is http://master_ip:master_webport/", - "Master Service URL to which to connect.(default: http://localhost:8080/)"), - BROKERURL(null, "broker-url", - "String: format is http://broker_ip:broker_webport/", - "Broker Service URL to which to connect.(default: http://localhost:8081/)"), + MASTERPORTAL(null, "master-portal", + "String: format is master_ip:master_webport", + "Master Service portal to which to connect.(default: 127.0.0.1:8080)"), + BROKERPORTAL(null, "broker-portal", + "String: format is broker_ip:broker_webport", + "Broker Service URL to which to connect.(default: 127.0.0.1:8081)"), MESSAGES(null, "messages", "Long: count", "The number of messages to send or consume, If not set, production or consumption is continual."), @@ -95,7 +95,13 @@ public enum CliArgDef { SYNCPRODUCE(null, "sync-produce", "Synchronous production. (default: false)"), WITHOUTDELAY(null, "without-delay", - "Production without delay. (default: false)"); + "Production without delay. (default: false)"), + METHOD(null, "method", + "String: http call method", + "Http call method"), + ADMINMETHOD(null, "show-methods", + "Return http's methods."); + diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/common/fielddef/WebFieldDef.java b/tubemq-server/src/main/java/org/apache/tubemq/server/common/fielddef/WebFieldDef.java index 1025ba0..44a6f81 100644 --- a/tubemq-server/src/main/java/org/apache/tubemq/server/common/fielddef/WebFieldDef.java +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/common/fielddef/WebFieldDef.java @@ -62,7 +62,11 @@ public enum WebFieldDef { "Topic name", TBaseConstants.META_MAX_TOPICNAME_LENGTH, RegexDef.TMP_STRING), COMPSPARTITIONID(12, "partitionId", "pid", WebFieldType.COMPINT, - "Partition id", RegexDef.TMP_NUMBER); + "Partition id", RegexDef.TMP_NUMBER), + CALLERIP(13, "callerIp", "cip", WebFieldType.STRING, + "Caller ip address", TBaseConstants.META_MAX_CLIENT_HOSTNAME_LENGTH); + + @@ -86,6 +90,12 @@ public enum WebFieldDef { } WebFieldDef(int id, String name, String shortName, WebFieldType type, + String desc, int valMaxLen) { + this(id, name, shortName, type, desc, valMaxLen, + TBaseConstants.META_VALUE_UNDEFINED, false, null); + } + + WebFieldDef(int id, String name, String shortName, WebFieldType type, String desc, RegexDef regexDef) { this(id, name, shortName, type, desc, TBaseConstants.META_VALUE_UNDEFINED, regexDef); diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/HttpUtils.java b/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/HttpUtils.java new file mode 100644 index 0000000..b600327 --- /dev/null +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/HttpUtils.java @@ -0,0 +1,112 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tubemq.server.common.utils; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Map; + +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; +import org.apache.tubemq.corebase.utils.AddressUtils; +import org.apache.tubemq.corebase.utils.TStringUtils; +import org.apache.tubemq.server.common.fielddef.WebFieldDef; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + + +/** + * This class is used to process http connection and return result conversion, + * currently does not support https + */ +public class HttpUtils { + // log printer + private static final Logger logger = + LoggerFactory.getLogger(HttpUtils.class); + + + /* Send request to target server. */ + public static JsonObject requestWebService(String url, + Map<String, String> inParamMap) throws Exception { + if (url == null) { + throw new Exception("Web service url is null!"); + } + if (url.trim().toLowerCase().startsWith("https://")) { + throw new Exception("Unsupported https protocol!"); + } + // process business parameters + ArrayList<BasicNameValuePair> params = new ArrayList<>(); + if (inParamMap != null && !inParamMap.isEmpty()) { + for (Map.Entry<String, String> entry : inParamMap.entrySet()) { + params.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); + } + if (inParamMap.containsKey(WebFieldDef.CALLERIP.shortName) + || inParamMap.containsKey(WebFieldDef.CALLERIP.name)) { + params.add(new BasicNameValuePair(WebFieldDef.CALLERIP.name, + AddressUtils.getIPV4LocalAddress())); + } + } + // build connect configure + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(50000).setSocketTimeout(60000).build(); + // build HttpClient and HttpPost objects + CloseableHttpClient httpclient = null; + HttpPost httpPost = null; + JsonObject jsonRes = null; + JsonParser jsonParser = new JsonParser(); + try { + httpclient = HttpClients.custom() + .setDefaultRequestConfig(requestConfig).build(); + httpPost = new HttpPost(url); + UrlEncodedFormEntity se = new UrlEncodedFormEntity(params); + httpPost.setEntity(se); + // send http request and process response + CloseableHttpResponse response = httpclient.execute(httpPost); + String returnStr = EntityUtils.toString(response.getEntity()); + if (TStringUtils.isNotBlank(returnStr) + && response.getStatusLine().getStatusCode() == 200) { + jsonRes = jsonParser.parse(returnStr).getAsJsonObject(); + } + } catch (Throwable e) { + throw new Exception("Connecting " + url + " throw an error!", e); + } finally { + if (httpPost != null) { + httpPost.releaseConnection(); + } + if (httpclient != null) { + try { + httpclient.close(); + } catch (IOException ie) { + logger.error("Close HttpClient error.", ie); + } + } + } + return jsonRes; + } + +} diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/common/webbase/WebMethodMapper.java b/tubemq-server/src/main/java/org/apache/tubemq/server/common/webbase/WebMethodMapper.java index a856014..83e0472 100644 --- a/tubemq-server/src/main/java/org/apache/tubemq/server/common/webbase/WebMethodMapper.java +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/common/webbase/WebMethodMapper.java @@ -18,7 +18,9 @@ package org.apache.tubemq.server.common.webbase; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -67,6 +69,13 @@ public class WebMethodMapper { .append(webHandler.getClass().getName()).toString()); } + public static List<String> getRegisteredWebMethod() { + List<String> methods = new ArrayList<>(); + methods.addAll(WEB_QRY_METHOD_MAP.keySet()); + methods.addAll(WEB_MDY_METHOD_MAP.keySet()); + return methods; + } + public static class WebApiRegInfo { diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/action/screen/Webapi.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/action/screen/Webapi.java index 5d4de04..5c5bb3f 100644 --- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/action/screen/Webapi.java +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/action/screen/Webapi.java @@ -105,7 +105,7 @@ public class Webapi implements Action { WebMethodMapper.WebApiRegInfo webApiRegInfo = getWebApiRegInfo(isQuery, method); if (webApiRegInfo == null) { strBuffer.append("{\"result\":false,\"errCode\":400,\"errMsg\":\"Unsupported method: ") - .append(method).append("}"); + .append(method).append("\"}"); requestContext.put("sb", strBuffer.toString()); } else { @@ -120,8 +120,8 @@ public class Webapi implements Action { } } } catch (Throwable e) { - strBuffer.append("{\"result\":false,\"errCode\":400,\"errMsg\":\"Bad request from client :") - .append(e.getMessage()).append("}"); + strBuffer.append("{\"result\":false,\"errCode\":400,\"errMsg\":\"Bad request from client, ") + .append(e.getMessage()).append("\"}"); requestContext.put("sb", strBuffer.toString()); } } diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliAbstractBase.java b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliAbstractBase.java index c0903f2..0a0953d 100644 --- a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliAbstractBase.java +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliAbstractBase.java @@ -71,6 +71,6 @@ public abstract class CliAbstractBase { protected abstract void initCommandOptions(); - public abstract boolean parseParams(String[] args) throws Exception; + public abstract boolean processParams(String[] args) throws Exception; } diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliBrokerAdmin.java b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliBrokerAdmin.java new file mode 100644 index 0000000..695ef68 --- /dev/null +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliBrokerAdmin.java @@ -0,0 +1,113 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tubemq.server.tools.cli; + +import com.google.gson.JsonObject; +import java.util.HashMap; +import java.util.Map; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.ParseException; +import org.apache.tubemq.corebase.utils.TStringUtils; +import org.apache.tubemq.server.common.fielddef.CliArgDef; +import org.apache.tubemq.server.common.utils.HttpUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + + +/** + * This class is use to process CLI Broker Admin process. + * + * + */ +public class CliBrokerAdmin extends CliAbstractBase { + + private static final Logger logger = + LoggerFactory.getLogger(CliBrokerAdmin.class); + + private static final String defBrokerPortal = "127.0.0.1:8081"; + + + public CliBrokerAdmin() { + super("tubemq-broker-admin.sh"); + initCommandOptions(); + } + + /** + * Init command options + */ + protected void initCommandOptions() { + // add the cli required parameters + addCommandOption(CliArgDef.BROKERPORTAL); + addCommandOption(CliArgDef.ADMINMETHOD); + addCommandOption(CliArgDef.METHOD); + + } + + public boolean processParams(String[] args) throws Exception { + // parse parameters and check value + CommandLine cli = parser.parse(options, args); + if (cli == null) { + throw new ParseException("Parse args failure"); + } + if (cli.hasOption(CliArgDef.VERSION.longOpt)) { + version(); + } + if (cli.hasOption(CliArgDef.HELP.longOpt)) { + help(); + } + String brokerAddr = defBrokerPortal; + if (cli.hasOption(CliArgDef.BROKERPORTAL.longOpt)) { + brokerAddr = cli.getOptionValue(CliArgDef.BROKERPORTAL.longOpt); + if (TStringUtils.isBlank(brokerAddr)) { + throw new Exception(CliArgDef.BROKERPORTAL.longOpt + " is required!"); + } + } + JsonObject result = null; + Map<String, String> inParamMap = new HashMap<>(); + String brokerUrl = "http://" + brokerAddr + "/broker.htm"; + if (cli.hasOption(CliArgDef.ADMINMETHOD.longOpt)) { + inParamMap.put(CliArgDef.METHOD.longOpt, "admin_get_methods"); + result = HttpUtils.requestWebService(brokerUrl, inParamMap); + System.out.println(result.toString()); + System.exit(0); + } + String methodStr = cli.getOptionValue(CliArgDef.METHOD.longOpt); + if (TStringUtils.isBlank(methodStr)) { + throw new Exception(CliArgDef.METHOD.longOpt + " is required!"); + } + inParamMap.put(CliArgDef.METHOD.longOpt, methodStr); + result = HttpUtils.requestWebService(brokerUrl, inParamMap); + System.out.println(result.toString()); + return true; + } + + public static void main(String[] args) { + CliBrokerAdmin cliBrokerAdmin = new CliBrokerAdmin(); + try { + cliBrokerAdmin.processParams(args); + } catch (Throwable ex) { + ex.printStackTrace(); + logger.error(ex.getMessage()); + cliBrokerAdmin.help(); + } + + } + + +} diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliConsumer.java b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliConsumer.java index 359ea44..c8938a6 100644 --- a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliConsumer.java +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliConsumer.java @@ -90,6 +90,7 @@ public class CliConsumer extends CliAbstractBase { /** * Init command options */ + @Override protected void initCommandOptions() { // add the cli required parameters addCommandOption(CliArgDef.MASTERSERVER); @@ -105,7 +106,8 @@ public class CliConsumer extends CliAbstractBase { addCommandOption(CliArgDef.OUTPUTINTERVAL); } - public boolean parseParams(String[] args) throws Exception { + @Override + public boolean processParams(String[] args) throws Exception { // parse parameters and check value CommandLine cli = parser.parse(options, args); if (cli == null) { @@ -364,7 +366,7 @@ public class CliConsumer extends CliAbstractBase { public static void main(String[] args) { CliConsumer cliConsumer = new CliConsumer(); try { - boolean result = cliConsumer.parseParams(args); + boolean result = cliConsumer.processParams(args); if (!result) { throw new Exception("Parse parameters failure!"); } diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliProducer.java b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliProducer.java index 2734ac1..1b2f25a 100644 --- a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliProducer.java +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/cli/CliProducer.java @@ -93,6 +93,7 @@ public class CliProducer extends CliAbstractBase { /** * Init command options */ + @Override protected void initCommandOptions() { // add the cli required parameters addCommandOption(CliArgDef.MASTERSERVER); @@ -110,7 +111,8 @@ public class CliProducer extends CliAbstractBase { addCommandOption(CliArgDef.WITHOUTDELAY); } - public boolean parseParams(String[] args) throws Exception { + @Override + public boolean processParams(String[] args) throws Exception { // parse parameters and check value CommandLine cli = parser.parse(options, args); if (cli == null) { @@ -348,7 +350,7 @@ public class CliProducer extends CliAbstractBase { public static void main(String[] args) { CliProducer cliProducer = new CliProducer(); try { - boolean result = cliProducer.parseParams(args); + boolean result = cliProducer.processParams(args); if (!result) { throw new Exception("Parse parameters failure!"); }
