Java 調用emqx 主動刪除某個clientid連接


要刪除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();
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM