|
|
@@ -1,7 +1,7 @@
|
|
|
package com.zhongshu.iot.server.core.util.test;
|
|
|
|
|
|
+import com.zhongshu.iot.server.core.util.JMXUtil;
|
|
|
import com.zhongshu.iot.server.core.util.mqtt.MqttTopicUtils;
|
|
|
-import lombok.Cleanup;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
|
|
|
import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
|
|
|
@@ -14,6 +14,7 @@ import javax.management.ObjectName;
|
|
|
import javax.management.remote.JMXConnector;
|
|
|
import javax.management.remote.JMXConnectorFactory;
|
|
|
import javax.management.remote.JMXServiceURL;
|
|
|
+import java.util.Random;
|
|
|
|
|
|
/**
|
|
|
* @author TRX
|
|
|
@@ -25,63 +26,76 @@ public class Test153AddUser {
|
|
|
public static void main(String[] args) {
|
|
|
try {
|
|
|
log.info("-------------------- 开始 --------------------------");
|
|
|
- JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://172.24.50.53:1098/jmxrmi");
|
|
|
- @Cleanup JMXConnector connector = JMXConnectorFactory.connect(url, null);
|
|
|
- connector.connect();
|
|
|
- System.out.println("连接成功..............");
|
|
|
- MBeanServerConnection connection = connector.getMBeanServerConnection();
|
|
|
+// ActiveMQServerControl addressControl = getAddressControl(
|
|
|
+// "192.168.32.113", "mq1");
|
|
|
|
|
|
- ObjectName addressObjectName = ObjectNameBuilder.create("org.apache.activemq.artemis", "broke1").getActiveMQServerObjectName();
|
|
|
+ ActiveMQServerControl addressControl = getAddressControl(
|
|
|
+ "192.168.32.107", "broke1");
|
|
|
|
|
|
- ActiveMQServerControl addressControl = MBeanServerInvocationHandler.newProxyInstance(connection, addressObjectName, ActiveMQServerControl.class, false);
|
|
|
-
|
|
|
-
|
|
|
- // 查询用户 可以筛选特定的名称
|
|
|
- String userListStr = addressControl.listUser("device2");
|
|
|
- log.info("userListStr: {}", userListStr);
|
|
|
- if (StringUtils.isNotEmpty(userListStr)) {
|
|
|
- // 如果不存在用户会报错
|
|
|
-// addressControl.removeUser("device1");
|
|
|
- }
|
|
|
StopWatch stopWatch = new StopWatch();
|
|
|
-
|
|
|
stopWatch.start("开始添加用户");
|
|
|
- for (int i = 0; i < 10; i++) {
|
|
|
- String name = "mqttUser" + i;
|
|
|
- try {
|
|
|
- addressControl.removeUser(name);
|
|
|
- } catch (Exception e) {
|
|
|
- }
|
|
|
-// String passWord = CommonUtil.generateRandomString(16);
|
|
|
- String roleName = name;
|
|
|
-
|
|
|
- String passWord = name;
|
|
|
-// String roleName = "amq";
|
|
|
- addressControl.addUser(name, passWord, roleName, true);
|
|
|
|
|
|
- String addressMatch = MqttTopicUtils.buildDeviceAllTopic(name);
|
|
|
-// addressControl.removeSecuritySettings(MqttTopicUtils.buildDeviceAllTopic(name));
|
|
|
- addressControl.removeSecuritySettings(addressMatch);
|
|
|
+ Random random = new Random();
|
|
|
+ Runnable runnable = () -> {
|
|
|
+ for (int i = 0; i < 10; i++) {
|
|
|
+ int num = random.nextInt(1000);
|
|
|
+ log.info("添加用户----------------------- {} {}", i, num);
|
|
|
+ String name = "mqttUser" + i;
|
|
|
+ try {
|
|
|
+ String str = addressControl.listUser(name);
|
|
|
+ if (JMXUtil.mqttUserIsExit(str)) {
|
|
|
+ addressControl.removeUser(name);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("{}", e.getMessage());
|
|
|
+ }
|
|
|
+// String roleName = "amq";
|
|
|
+ String roleName = name;
|
|
|
+ String passWord = name;
|
|
|
+ try {
|
|
|
+ addressControl.addUser(name, passWord, roleName, true);
|
|
|
+ String addressMatch = MqttTopicUtils.buildDeviceAllTopic(name);
|
|
|
+// addressMatch = "/#";
|
|
|
+// addressControl.removeSecuritySettings(addressMatch);
|
|
|
+ log.info("addUser: {} {} ", name, addressMatch);
|
|
|
+ addressControl.addSecuritySettings(addressMatch, roleName, roleName, roleName, roleName, roleName, roleName, roleName, roleName, roleName, roleName);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("出错: {}", e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
|
|
|
- log.info("addUser: {} {} ", name, addressMatch);
|
|
|
- addressControl.addSecuritySettings(
|
|
|
- addressMatch,
|
|
|
- roleName, roleName, roleName, roleName, roleName, roleName, roleName,
|
|
|
- roleName, roleName, roleName);
|
|
|
+ for (int j = 0; j < 1; j++) {
|
|
|
+ Thread thread = new Thread(runnable);
|
|
|
+ thread.start();
|
|
|
}
|
|
|
+
|
|
|
stopWatch.stop();
|
|
|
log.info("耗时:{}", stopWatch.prettyPrint());
|
|
|
-
|
|
|
-// // 添加用户 如果存在会报错
|
|
|
-// addressControl.addUser("device2", "trx", "trx", false);
|
|
|
-// // 删除用户 如果不存在会报错
|
|
|
-//// addressControl.removeUser("device1");
|
|
|
-// log.info("添加用户成功1....");
|
|
|
-// log.info("users: {}", addressControl.listUser(null));
|
|
|
log.info("-------------------- 结束 --------------------------");
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ public static ActiveMQServerControl getAddressControl(String url, String broker) {
|
|
|
+ if (StringUtils.isEmpty(broker)) {
|
|
|
+ broker = "broke1";
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ JMXServiceURL serviceURL = new JMXServiceURL(String.format("service:jmx:rmi:///jndi/rmi://%s:1098/jmxrmi", url));
|
|
|
+ JMXConnector connector = JMXConnectorFactory.connect(serviceURL, null);
|
|
|
+ connector.connect();
|
|
|
+ System.out.println("连接成功..............");
|
|
|
+ MBeanServerConnection connection = connector.getMBeanServerConnection();
|
|
|
|
|
|
+ ObjectName addressObjectName = ObjectNameBuilder.create("org.apache.activemq.artemis", broker).getActiveMQServerObjectName();
|
|
|
+ ActiveMQServerControl addressControl = MBeanServerInvocationHandler.newProxyInstance(connection, addressObjectName, ActiveMQServerControl.class, false);
|
|
|
+ return addressControl;
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return null;
|
|
|
}
|
|
|
+
|
|
|
}
|