packageinfluxdb;importjava.security.SecureRandom;importjava.security.cert.X509Certificate;importjava.util.concurrent.TimeUnit;importjavax.net.ssl.SSLContext;importokhttp3.OkHttpClient;importorg.influxdb.InfluxDB;importorg.influxdb.InfluxDBFactory;importorg.influxdb.dto.Point;importorg.influxdb.dto.Query;importorg.influxdb.dto.QueryResult;importorg.apache.http.ssl.SSLContexts;importjavax.net.ssl.*;publicclass demo {publicstaticvoidmain(String[] args){OkHttpClient.Builder client =newOkHttpClient.Builder().connectTimeout(10,TimeUnit.SECONDS).writeTimeout(10,TimeUnit.SECONDS).readTimeout(10,TimeUnit.SECONDS).retryOnConnectionFailure(true);
client.sslSocketFactory(defaultSslSocketFactory(),defaultTrustManager());
client.hostnameVerifier(noopHostnameVerifier());finalString serverURL ="https://127.0.0.1:8086", username ="root", password ="root";InfluxDB influxdb =InfluxDBFactory.connect(serverURL, username, password, client);// Create a database...String databaseName ="foo";
influxdb.query(newQuery("CREATE DATABASE "+ databaseName, databaseName));
influxdb.setDatabase(databaseName);// Write points to influxdb.
influxdb.write(Point.measurement("bar").time(System.currentTimeMillis(),TimeUnit.MILLISECONDS).tag("location","chengdu").addField("temperature",22).build());// Query your data using InfluxQL.QueryResult queryResult = influxdb.query(newQuery("SELECT * FROM bar", databaseName));// Close it if your application is terminating or you are not using it anymore.
influxdb.close();}privatestaticX509TrustManagerdefaultTrustManager(){returnnewX509TrustManager(){publicX509Certificate[]getAcceptedIssuers(){returnnewX509Certificate[0];}publicvoidcheckClientTrusted(X509Certificate[] certs,String authType){}publicvoidcheckServerTrusted(X509Certificate[] certs,String authType){}};}privatestaticSSLSocketFactorydefaultSslSocketFactory(){try{SSLContext sslContext =SSLContexts.createDefault();
sslContext.init(null,newTrustManager[]{defaultTrustManager()},newSecureRandom());return sslContext.getSocketFactory();}catch(Exception e){thrownewRuntimeException(e);}}privatestaticHostnameVerifiernoopHostnameVerifier(){returnnewHostnameVerifier(){@Overridepublicbooleanverify(finalString s,finalSSLSession sslSession){returntrue;//true 表示使用ssl方式,但是不校验ssl证书,建议使用这种方式}};}}
使用非SSL方式连接实例的Java代码示例:
packageinfluxdb;importokhttp3.OkHttpClient;importorg.influxdb.InfluxDB;importorg.influxdb.InfluxDBFactory;importorg.influxdb.dto.Point;importorg.influxdb.dto.Query;importorg.influxdb.dto.QueryResult;importjava.util.concurrent.TimeUnit;publicclass demoNoSSL {publicstaticvoidmain(String[] args){OkHttpClient.Builder client =newOkHttpClient.Builder().connectTimeout(10,TimeUnit.SECONDS).writeTimeout(10,TimeUnit.SECONDS).readTimeout(10,TimeUnit.SECONDS).retryOnConnectionFailure(true);finalString serverURL ="http://127.0.0.1:8086", username ="root", password ="root";InfluxDB influxdb =InfluxDBFactory.connect(serverURL, username, password, client);// Create a database...String databaseName ="foo";
influxdb.query(newQuery("CREATE DATABASE "+ databaseName, databaseName));
influxdb.setDatabase(databaseName);// Write points to influxdb.
influxdb.write(Point.measurement("bar").time(System.currentTimeMillis(),TimeUnit.MILLISECONDS).tag("location","chengdu").addField("temperature",22).build());// Query your data using InfluxQL.QueryResult queryResult = influxdb.query(newQuery("SELECT * FROM bar", databaseName));// Close it if your application is terminating or you are not using it anymore.
influxdb.close();}}
使用连接池方式连接实例的Java代码示例:
packageinfluxdb;importokhttp3.ConnectionPool;importokhttp3.OkHttpClient;importorg.influxdb.InfluxDB;importorg.influxdb.InfluxDBFactory;importorg.influxdb.dto.Point;importorg.influxdb.dto.Query;importorg.influxdb.dto.QueryResult;importjava.util.concurrent.TimeUnit;publicclass demoConnectionPool {publicstaticvoidmain(String[] args){// 客户端连接池功能基于OkHttpClient实现OkHttpClient.Builder client =newOkHttpClient().newBuilder();
client.connectTimeout(10,TimeUnit.SECONDS);
client.readTimeout(10,TimeUnit.SECONDS);
client.writeTimeout(10,TimeUnit.SECONDS);// 建议设为true,屏蔽部分连接错误,并自动进行重试
client.retryOnConnectionFailure(true);// maxIdleConnections指连接池最多维护的未使用的Idle连接数量,默认值是5// 超过阈值的idle连接会由连接池关闭,关闭后sockets进入TIME_WAIT状态等待系统回收,该参数需根据实际连接数适当调整
client.connectionPool(newConnectionPool(5,30,TimeUnit.SECONDS));finalString serverURL ="http://127.0.0.1:8086", username ="root", password ="root";InfluxDB influxdb =InfluxDBFactory.connect(serverURL, username, password, client);// Create a database...String databaseName ="foo";
influxdb.query(newQuery("CREATE DATABASE "+ databaseName, databaseName));
influxdb.setDatabase(databaseName);// Write points to influxdb.
influxdb.write(Point.measurement("bar").time(System.currentTimeMillis(),TimeUnit.MILLISECONDS).tag("location","chengdu").addField("temperature",22).build());// Query your data using InfluxQL.QueryResult queryResult = influxdb.query(newQuery("SELECT * FROM bar", databaseName));// Close it if your application is terminating or you are not using it anymore.
influxdb.close();}}