导入两个Httpclient包 kakfa 使用httpclient测试 connectors restAPI 测试 public enum HttpEnum { HTTP("http://"), HTTP_GET("get"), HTTP_POST("post"), HTTP_PUT("put"), HTTP_DELETE("delete"), HTTP_HEAD("head"), HTTP_TRACE("trace"), HTTP_OPINIONS("opinions"), COLON(":"), BACKSLASH("/"); HttpEnum(String value){ this.value = value; } private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } }
public enum KafkaEnum { KAFKA_DEFAULTTERM("connectors"), KAFKA_TASKS("tasks"), KAFKA_STATUS("status"), KAFKA_CONFIG("config"), KAFKA_PAUSE("pause"), KAFKA_RESUME("resume"), KAFKA_RESTART("restart"); private String value; KafkaEnum(String value){ this.value = value; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } }
import java.io.IOException; import java.net.URI; import java.nio.charset.Charset; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicHeader; import org.apache.http.util.EntityUtils; public class HttpClientKafkaUtil { private static CloseableHttpClient httpClient = null; static { httpClient = HttpClients.createDefault(); } /** * 更新 connectors * 格式 * {"connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector", * "tasks.max": "1", * "connection.url": "jdbc:mysql://192.168.0.119:3306/testo?user=root&password=**", * "topics": "mysql-kafka-person", * "auto.create": "false", * "insert.mode" : "upsert", * "pk.mode":"record_value", * "pk.fields":"pid", * "table.name.format":"kafkaperson"} * 更新connector配置 * data 参考 createConnector */ public static String updateConnector(String ip,int port,String updateData,String connectorName){ String uri = HttpEnum.HTTP.getValue() + ip + HttpEnum.COLON.getValue() + port + HttpEnum.BACKSLASH.getValue() + KafkaEnum.KAFKA_DEFAULTTERM.getValue()+ HttpEnum.BACKSLASH.getValue() + connectorName + HttpEnum.BACKSLASH.getValue() +KafkaEnum.KAFKA_CONFIG.getValue(); Header header = new BasicHeader("Content-Type","application/json"); StringEntity stringEntity = new StringEntity(updateData, Charset.forName("UTF-8")); String detail = httpclientGetExecute1(uri,stringEntity,header); return detail; } /** * 重启connectors .. */ public static String getConnectRestart(String ip,int port,String connectorName){ String uri = HttpEnum.HTTP.getValue() + ip + HttpEnum.COLON.getValue() + port + HttpEnum.BACKSLASH.getValue() +KafkaEnum.KAFKA_DEFAULTTERM.getValue() +HttpEnum.BACKSLASH.getValue()+ connectorName + HttpEnum.BACKSLASH.getValue() + KafkaEnum.KAFKA_RESTART.getValue() ; System.out.println(uri); return httpclientGetExecute(uri,HttpEnum.HTTP_POST.getValue(),null); } /** * 新建一个connector * @param ip * @param port * @param data 数据 这里指connect 配置 * demo * { * "name": "mysql-a-source-person", connect的名字 * "config": { conncet的配置 * "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector", * "tasks.max": "1", * "connection.url": "jdbc:mysql://192.168.0.119:3306/test?user=root&password=***", * "mode": "incrementing", * "incrementing.column.name": "pid", * "table.whitelist" : "person", * "topic.prefix":"mysql-kafka-"}}' * * * @return */ public static String createConnector(String ip,int port,String data){ String uri = HttpEnum.HTTP.getValue() + ip + HttpEnum.COLON.getValue() + port + HttpEnum.BACKSLASH.getValue() + KafkaEnum.KAFKA_DEFAULTTERM.getValue(); Header header = new BasicHeader("Content-Type","application/json"); StringEntity stringEntity = new StringEntity(data, Charset.forName("UTF-8")); String detail = httpclientGetExecute(uri,stringEntity,header); return detail; } /** * 重启 Connector 未测 * @param ip * @param port * @param connectorName * @return */ public static String getConnectResume(String ip,int port,String connectorName){ String uri = HttpEnum.HTTP.getValue() + ip + HttpEnum.COLON.getValue() + port + HttpEnum.BACKSLASH.getValue() +KafkaEnum.KAFKA_DEFAULTTERM.getValue() +HttpEnum.BACKSLASH.getValue() + connectorName + HttpEnum.BACKSLASH.getValue() + KafkaEnum.KAFKA_RESUME.getValue(); return httpclientGetExecute(uri,HttpEnum.HTTP_PUT.getValue(),null); } /** * 暂停 Connector 未测 * @param ip * @param port * @param connectorName * @return */ public static String getConnectPause(String ip,int port,String connectorName){ String uri = HttpEnum.HTTP.getValue() + ip + HttpEnum.COLON.getValue() + port + HttpEnum.BACKSLASH.getValue() +KafkaEnum.KAFKA_DEFAULTTERM.getValue() +HttpEnum.BACKSLASH.getValue()+ connectorName + HttpEnum.BACKSLASH.getValue() + KafkaEnum.KAFKA_PAUSE.getValue(); System.out.println(uri); return httpclientGetExecute(uri,HttpEnum.HTTP_PUT.getValue(),null); } /** * 获取 Connector 配置信息 .. * @param ip * @param port * @param connectorName * @return */ public static String getConnectConfig(String ip,int port,String connectorName){ String uri = HttpEnum.HTTP.getValue() + ip + HttpEnum.COLON.getValue() + port + HttpEnum.BACKSLASH.getValue() +KafkaEnum.KAFKA_DEFAULTTERM.getValue() +HttpEnum.BACKSLASH.getValue()+ connectorName + HttpEnum.BACKSLASH.getValue() + KafkaEnum.KAFKA_CONFIG.getValue(); System.out.println(uri); return httpclientGetExecute(uri,HttpEnum.HTTP_GET.getValue(),null); } /** * 获取 Connector 状态信息 .. * @param ip * @param port * @param connectorName * @return */ public static String getConnectStatus(String ip,int port,String connectorName){ String uri = HttpEnum.HTTP.getValue() + ip + HttpEnum.COLON.getValue() + port + HttpEnum.BACKSLASH.getValue() +KafkaEnum.KAFKA_DEFAULTTERM.getValue() +HttpEnum.BACKSLASH.getValue()+ connectorName + HttpEnum.BACKSLASH.getValue() + KafkaEnum.KAFKA_STATUS.getValue(); System.out.println(uri); return httpclientGetExecute(uri,HttpEnum.HTTP_GET.getValue(),null); } /** * 获取 Connector 上 Task 以及相关配置的信息 .. * @param ip * @param port * @param connectorName * @return */ public static String getConnectTask(String ip,int port,String connectorName){ String uri = HttpEnum.HTTP.getValue() + ip + HttpEnum.COLON.getValue() + port + HttpEnum.BACKSLASH.getValue()+KafkaEnum.KAFKA_DEFAULTTERM.getValue() +HttpEnum.BACKSLASH.getValue() + connectorName + HttpEnum.BACKSLASH.getValue() + KafkaEnum.KAFKA_TASKS.getValue(); return httpclientGetExecute(uri,HttpEnum.HTTP_GET.getValue(),null); } /** * 获取 Connect Worker 信息 .. * @param ip * @param port * @return */ public static String getConnectWorkerDetails(String ip,int port){ String uri = HttpEnum.HTTP.getValue() + ip + HttpEnum.COLON.getValue() + port ; System.out.println(uri); // 创建http GET请求 return httpclientGetExecute(uri,HttpEnum.HTTP_GET.getValue(),null); } /** * 列出 Connect Worker 上所有 Connector .. * @param ip * @param port * @return */ public static String getConnectorsDetails(String ip,int port){ String uri = HttpEnum.HTTP.getValue() + ip + HttpEnum.COLON.getValue() + port + HttpEnum.BACKSLASH.getValue() + KafkaEnum.KAFKA_DEFAULTTERM.getValue() ; System.out.println(uri); // Header header = new BasicHeader("Content-Type","application/json"); // Header header1 = new BasicHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"); /* Header header2 = new BasicHeader("Accept-Encoding","gzip, deflate"); Header header3 = new BasicHeader("Accept-Language","zh-CN,zh;q=0.9"); Header header4 = new BasicHeader("Cache-Control","max-age=0"); Header header5 = new BasicHeader("Connection","keep-alive"); Header header6 = new BasicHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"); Header header7 = new BasicHeader("Upgrade-Insecure-Requests","1"); */ return httpclientGetExecute(uri,HttpEnum.HTTP_GET.getValue(),null); } /** * 删除运行中的connectors .. * @param ip * @param port * @param connectorName connectors name * @return */ public static String deleteConnectors(String ip,int port,String connectorName){ String url = HttpEnum.HTTP.getValue() + ip + HttpEnum.COLON.getValue() + port + HttpEnum.BACKSLASH.getValue() + KafkaEnum.KAFKA_DEFAULTTERM.getValue() + HttpEnum.BACKSLASH.getValue() + connectorName; // 创建Http Post请求 HttpDelete httpDelete = new HttpDelete(url); // 执行http请求 try ( CloseableHttpResponse response = httpClient.execute(httpDelete)){ HttpEntity entity = response.getEntity(); if(entity == null){ return ""; } return EntityUtils.toString(entity, "utf-8"); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 关闭response * @param response */ public static void closeCloseableHttpResponse(CloseableHttpResponse response){ if(response != null){ try { response.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * * @param uri * @param type 请求类型 get post put ..... * @param header 请求头 * @return */ public static String httpclientGetExecute(String uri, String type, Header... header){ HttpUriRequest http = new HttpRequestBase() { @Override public String getMethod() { return type.toUpperCase(); } }; ((HttpRequestBase) http).setURI(URI.create(uri)); if(header != null){ for(Header h : header){ http.addHeader(h); } } // 执行请求 try (CloseableHttpResponse response = httpClient.execute(http)){ HttpEntity entity = response.getEntity(); if(entity == null){ return ""; } return EntityUtils.toString(entity, "utf-8"); } catch (IOException e) { e.printStackTrace(); } return ""; } /** * 新建 connectors * @param uri * @param header 请求头 只支持post * @return */ public static String httpclientGetExecute(String uri ,StringEntity stringEntity, Header... header){ HttpPost httpPost = new HttpPost(uri); httpPost.setURI(URI.create(uri)); httpPost.setEntity(stringEntity); //HttpRequestBase httpRequestBase = ((HttpRequestBase) http); //((HttpEntityEnclosingRequestBase)http).setEntity(stringEntity); if(header != null){ for(Header h : header){ httpPost.addHeader(h); } } // 执行请求 try (CloseableHttpResponse response = httpClient.execute(httpPost)){ return EntityUtils.toString(response.getEntity(), "utf-8"); } catch (IOException e) { e.printStackTrace(); } return ""; } /** * 更新 connectors * 格式 * * * @param uri * @param header 请求头 只支持put * @return */ public static String httpclientGetExecute1(String uri ,StringEntity stringEntity, Header... header){ HttpPut httpPut = new HttpPut(uri); System.out.println(uri); httpPut.setURI(URI.create(uri)); httpPut.setEntity(stringEntity); //HttpRequestBase httpRequestBase = ((HttpRequestBase) http); //((HttpEntityEnclosingRequestBase)http).setEntity(stringEntity); if(header != null){ for(Header h : header){ httpPut.addHeader(h); } } // 执行请求 try (CloseableHttpResponse response = httpClient.execute(httpPut)){ return EntityUtils.toString(response.getEntity(), "utf-8"); } catch (IOException e) { e.printStackTrace(); } return ""; }