通过java获取emqx的连接clientid列表和删除某个clientid连接

1.通过java获取emqx的连接clientid列表

注:通过代码获取emqx服务器连接的客户端列表信息,java代码实现clientid列表如下:

private String username = "emqx账号";
private String password = "emqx密码";
public String fetchClientList() throws Exception {
    String EMQX_API_URL = "emqx后台clientid列表url";
    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpGet httpGet = new HttpGet(EMQX_API_URL);
    httpGet.setHeader("Authorization", "Basic " + Base64.getEncoder()
            .encodeToString((username + ":" + password).getBytes()));
    HttpResponse httpResponse = httpClient.execute(httpGet);
    HttpEntity httpEntity = httpResponse.getEntity();
    String response = EntityUtils.toString(httpEntity, "UTF-8");
    return response;
}

2.删除某个clientid连接

删除地址为:http://127.0.0.1:18083/api/v4/clients/clientid_000001

public ResultDTO deleteClientId(String clientid){
        log.info("deleteClientId 设备禁用,下行指令剔除原mqtt的clientid连接,入参clientid: {}", clientid);
        try {
                clientid = URLEncoder.encode(clientid,"UTF-8");
        } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
                return ResultDTO.getFailure();
        }
        // 这里拼接处要删除clientid 地址。例:http://127.0.0.1:18083/api/v4/clients/clientid_000001
        String url = String.format(ConstantConfig.MQTT_DASHBOARD_URL_STR, ConstantConfig.getServerConfig().getProperty(ConstantConfig.MQTT_DASHBOARD_URL).trim(), clientid );
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpDelete httpDelete = new HttpDelete(url);
        RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000).setConnectionRequestTimeout(35000).setSocketTimeout(60000).build();
        httpDelete.setConfig(requestConfig);
        // 这里emqx web的登录名密码。例:admin:public 
        String authString = ConstantConfig.getServerConfig().getProperty(ConstantConfig.MQTT_DASHBOARD_USER).trim()+":"+ConstantConfig.getServerConfig().getProperty(ConstantConfig.MQTT_DASHBOARD_PASSWORD).trim();
        byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
        String authStringEnc = new String(authEncBytes);
        httpDelete.setHeader("Authorization", "Basic " + authStringEnc);
        httpDelete.setHeader("Content-type", "application/json");
        httpDelete.setHeader("DataEncoding", "UTF-8");
        CloseableHttpResponse httpResponse = null;
        try {
                // 通过http请求进行访问。
                httpResponse = httpClient.execute(httpDelete);
                HttpEntity entity = httpResponse.getEntity();
                // 获得删除结果
                String result = EntityUtils.toString(entity);
        } catch (ClientProtocolException e) {
                e.printStackTrace();
                return ResultDTO.getFailure();
        } catch (IOException e) {
                e.printStackTrace();
                return ResultDTO.getFailure();
        } finally {
                if (httpResponse != null) {
                        try {
                                httpResponse.close();
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                }
                if (null != httpClient) {
                        try {
                                httpClient.close();
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                }
        } 
        return ResultDTO.getSuccess();
    }
  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
EMQ X是一个开源的高度可伸缩的分布式 MQTT 消息服务器,它是基于 Erlang/OTP 平台开发的,具有高性能、高可靠性和高可扩展性等特点。而Java是一种广泛使用的编程语言,可以结合EMQ X使用,实现更多功能。 以下是使用Java与EMQ X进行开发的一些基本信息: 1.使用Java连接EMQ X 您可以使用Java Mqtt Client库来连接EMQ X。这个库可以通过Maven或Gradle等构建工具来获取。 以下是一个简单的Java代码示例,用于创建一个EMQ X连接并订阅主题: ```java String broker = "tcp://localhost:1883"; String clientId = "java-mqtt-client"; String topic = "test"; int qos = 1; MqttClient client = new MqttClient(broker, clientId); client.connect(); client.subscribe(topic, qos); // 处理接收到的消息 client.setCallback(new MqttCallback() { public void messageArrived(String topic, MqttMessage message) throws Exception { System.out.println("Received message: " + new String(message.getPayload())); } }); ``` 2.使用Java发布消息到EMQ X 您可以使用Java Mqtt Client库来向EMQ X发布消息。以下是一个简单的Java代码示例: ```java String broker = "tcp://localhost:1883"; String clientId = "java-mqtt-client"; String topic = "test"; String payload = "Hello World!"; int qos = 1; MqttClient client = new MqttClient(broker, clientId); client.connect(); MqttMessage message = new MqttMessage(payload.getBytes()); message.setQos(qos); client.publish(topic, message); ``` 3.使用Java与EMQ X进行数据交互 您可以使用Java与EMQ X进行数据交互,例如订阅EMQ X的主题,将数据存储在数据库中,然后使用Java从数据库中读取数据并进行处理。 这些是使用Java与EMQ X进行开发的基本信息。希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值