ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java 调用emqx 主动删除某个clientid连接

2020-08-10 20:33:43  阅读:750  来源: 互联网

标签:Java String 删除 clientid httpDelete ConstantConfig emqx


要删除emqx的某个clientid连接,

1、可以通过界面直接手动删除。

 

 

2、可以通过命令行:

查询所有clientid
# ./bin/emqx_ctl clients list
删除某个clientid
# ./bin/emqx_ctl clients kick <Clientid>

进行删除。

3、还可以通过Java接口调用删除:

我的emqx 版本是 4.0.4 。删除地址为 

http://127.0.0.1:18083/api/v4/clients/clientid_test

其他版本访问地址可能有所不同,请注意。

 @Override
    public ResultDTO deleteClientId(String clientid){
        log.info("deleteClientId 设备禁用,下行指令剔除原mqtt的clientid连接,入参clientid: {}", clientid);
        try {
                /* 传入的clientid 可能有特殊字符,先进行字符转换 */
                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_test
        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();
    }

 

标签:Java,String,删除,clientid,httpDelete,ConstantConfig,emqx
来源: https://www.cnblogs.com/wgy1/p/13471982.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有