You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tubemq.apache.org by yu...@apache.org on 2021/01/29 10:07:10 UTC
[incubator-tubemq] 12/49: [TUBEMQ-447] Add Broker-Admin Cli (#347)
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 <46...@qq.com>
AuthorDate: Fri Dec 11 19:15:15 2020 +0800
[TUBEMQ-447] Add Broker-Admin Cli (#347)
Co-authored-by: gosonzhang <go...@tencent.com>
---
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!");
}