mark
This commit is contained in:
		
							
								
								
									
										17
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								pom.xml
									
									
									
									
									
								
							@@ -14,6 +14,7 @@
 | 
				
			|||||||
        <module>ym-gateway</module>
 | 
					        <module>ym-gateway</module>
 | 
				
			||||||
        <module>ym-baisc</module>
 | 
					        <module>ym-baisc</module>
 | 
				
			||||||
        <module>ym-schedule-task</module>
 | 
					        <module>ym-schedule-task</module>
 | 
				
			||||||
 | 
					        <module>ym-influx</module>
 | 
				
			||||||
    </modules>
 | 
					    </modules>
 | 
				
			||||||
    <packaging>pom</packaging>
 | 
					    <packaging>pom</packaging>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -89,6 +90,22 @@
 | 
				
			|||||||
            <artifactId>spring-boot-configuration-processor</artifactId>
 | 
					            <artifactId>spring-boot-configuration-processor</artifactId>
 | 
				
			||||||
            <optional>true</optional>
 | 
					            <optional>true</optional>
 | 
				
			||||||
        </dependency>
 | 
					        </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <!-- influx start-->
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework.boot</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-boot-actuator-autoconfigure</artifactId>
 | 
				
			||||||
 | 
					            <optional>true</optional>
 | 
				
			||||||
 | 
					            <exclusions>
 | 
				
			||||||
 | 
					                <exclusion>
 | 
				
			||||||
 | 
					                    <groupId>com.fasterxml.jackson.core</groupId>
 | 
				
			||||||
 | 
					                    <artifactId>jackson-databind</artifactId>
 | 
				
			||||||
 | 
					                </exclusion>
 | 
				
			||||||
 | 
					            </exclusions>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <!-- influx end-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <groupId>redis.clients</groupId>
 | 
					            <groupId>redis.clients</groupId>
 | 
				
			||||||
            <artifactId>jedis</artifactId>
 | 
					            <artifactId>jedis</artifactId>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,6 +72,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
 | 
				
			|||||||
                        "/swagger-ui/**",
 | 
					                        "/swagger-ui/**",
 | 
				
			||||||
                        "/webjars/**",
 | 
					                        "/webjars/**",
 | 
				
			||||||
                        "/websocket/**",
 | 
					                        "/websocket/**",
 | 
				
			||||||
 | 
					                        "/influx/**",
 | 
				
			||||||
                        "/captcha").anonymous()
 | 
					                        "/captcha").anonymous()
 | 
				
			||||||
//                .antMatchers("/testCors").hasAuthority("system:dept:list222")
 | 
					//                .antMatchers("/testCors").hasAuthority("system:dept:list222")
 | 
				
			||||||
                // 除上面外的所有请求全部需要鉴权认证
 | 
					                // 除上面外的所有请求全部需要鉴权认证
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,26 @@
 | 
				
			|||||||
            <artifactId>ym-baisc</artifactId>
 | 
					            <artifactId>ym-baisc</artifactId>
 | 
				
			||||||
            <version>1.0-SNAPSHOT</version>
 | 
					            <version>1.0-SNAPSHOT</version>
 | 
				
			||||||
        </dependency>
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>com.cnbm</groupId>
 | 
				
			||||||
 | 
					            <artifactId>ym-influx</artifactId>
 | 
				
			||||||
 | 
					            <version>1.0-SNAPSHOT</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					<!--        <dependency>-->
 | 
				
			||||||
 | 
					<!--            <groupId>org.springframework.boot</groupId>-->
 | 
				
			||||||
 | 
					<!--            <artifactId>spring-boot-actuator-autoconfigure</artifactId>-->
 | 
				
			||||||
 | 
					<!--            <version>2.7.0</version>-->
 | 
				
			||||||
 | 
					<!--            <optional>true</optional>-->
 | 
				
			||||||
 | 
					<!--            <exclusions>-->
 | 
				
			||||||
 | 
					<!--                <exclusion>-->
 | 
				
			||||||
 | 
					<!--                    <groupId>com.fasterxml.jackson.core</groupId>-->
 | 
				
			||||||
 | 
					<!--                    <artifactId>jackson-databind</artifactId>-->
 | 
				
			||||||
 | 
					<!--                </exclusion>-->
 | 
				
			||||||
 | 
					<!--            </exclusions>-->
 | 
				
			||||||
 | 
					<!--        </dependency>-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <groupId>com.cnbm</groupId>
 | 
					            <groupId>com.cnbm</groupId>
 | 
				
			||||||
            <artifactId>ym-schedule-task</artifactId>
 | 
					            <artifactId>ym-schedule-task</artifactId>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -86,6 +86,22 @@ public class SwaggerConfig {
 | 
				
			|||||||
                .securitySchemes(Arrays.asList(new ApiKey("token", "token", "header")));
 | 
					                .securitySchemes(Arrays.asList(new ApiKey("token", "token", "header")));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Bean
 | 
				
			||||||
 | 
					    public Docket influxApi() {
 | 
				
			||||||
 | 
					        return new Docket(DocumentationType.SWAGGER_2)
 | 
				
			||||||
 | 
					                .groupName("ym-influx")
 | 
				
			||||||
 | 
					                .apiInfo(apiInfos("influx", "influx模块"))
 | 
				
			||||||
 | 
					                .useDefaultResponseMessages(true)
 | 
				
			||||||
 | 
					                .forCodeGeneration(false)
 | 
				
			||||||
 | 
					                .select()
 | 
				
			||||||
 | 
					                .apis(RequestHandlerSelectors.basePackage("com.cnbm.influx"))
 | 
				
			||||||
 | 
					                .paths(PathSelectors.any())
 | 
				
			||||||
 | 
					                .build()
 | 
				
			||||||
 | 
					                .securityContexts(Arrays.asList(securityContext()))
 | 
				
			||||||
 | 
					                // ApiKey的name需与SecurityReference的reference保持一致
 | 
				
			||||||
 | 
					                .securitySchemes(Arrays.asList(new ApiKey("token", "token", "header")));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 创建该API的基本信息(这些基本信息会展现在文档页面中)
 | 
					     * 创建该API的基本信息(这些基本信息会展现在文档页面中)
 | 
				
			||||||
     * 访问地址:http://ip:port/swagger-ui.html
 | 
					     * 访问地址:http://ip:port/swagger-ui.html
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,4 +37,18 @@ spring:
 | 
				
			|||||||
#      driver-class-name: org.postgresql.Driver
 | 
					#      driver-class-name: org.postgresql.Driver
 | 
				
			||||||
#      url: jdbc:postgresql://123456:5432/renren_security
 | 
					#      url: jdbc:postgresql://123456:5432/renren_security
 | 
				
			||||||
#      username: postgres
 | 
					#      username: postgres
 | 
				
			||||||
#      password: 123456
 | 
					#      password: 123456
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					influx:
 | 
				
			||||||
 | 
					  url: http://192.168.0.170:8086 # URL to connect to InfluxDB.
 | 
				
			||||||
 | 
					  username: caixiang # Username to use in the basic auth.
 | 
				
			||||||
 | 
					  password: 251128856 # Password to use in the basic auth.
 | 
				
			||||||
 | 
					  token: lkBsC27QZr1W50BSPlGxpTqNNpwuUk5uz1dZZRPSPbCG5VmNDDUo8P3UkZIhGWwfJwkuz6ZGZ7Et4_KBaG3gHw== # Token to use for the authorization.
 | 
				
			||||||
 | 
					  org: qgs # Default destination organization for writes and queries.
 | 
				
			||||||
 | 
					  bucket: qgs-bucket # Default destination bucket for writes.
 | 
				
			||||||
 | 
					  logLevel: BODY # The log level for logging the HTTP request and HTTP response. (Default: NONE)
 | 
				
			||||||
 | 
					  readTimeout: 5s # Read timeout for OkHttpClient. (Default: 10s)
 | 
				
			||||||
 | 
					  writeTimeout: 5s # Write timeout for OkHttpClient. (Default: 10s)
 | 
				
			||||||
 | 
					  connectTimeout: 5s # Connection timeout for OkHttpClient. (Default: 10s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # management.health.influx.enabled=true # Whether to enable InfluxDB 2.x health check.
 | 
				
			||||||
@@ -73,4 +73,5 @@ mybatis-plus:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
logging:
 | 
					logging:
 | 
				
			||||||
  level:
 | 
					  level:
 | 
				
			||||||
    com.cnbm.admin.dao: DEBUG
 | 
					    com.cnbm.admin.dao: DEBUG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										76
									
								
								ym-influx/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								ym-influx/pom.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project xmlns="http://maven.apache.org/POM/4.0.0"
 | 
				
			||||||
 | 
					         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
				
			||||||
 | 
					         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
				
			||||||
 | 
					    <parent>
 | 
				
			||||||
 | 
					        <artifactId>ym-pass</artifactId>
 | 
				
			||||||
 | 
					        <groupId>com.cnbm</groupId>
 | 
				
			||||||
 | 
					        <version>1.0-SNAPSHOT</version>
 | 
				
			||||||
 | 
					    </parent>
 | 
				
			||||||
 | 
					    <modelVersion>4.0.0</modelVersion>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <artifactId>ym-influx</artifactId>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <properties>
 | 
				
			||||||
 | 
					        <maven.compiler.source>8</maven.compiler.source>
 | 
				
			||||||
 | 
					        <maven.compiler.target>8</maven.compiler.target>
 | 
				
			||||||
 | 
					    </properties>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <dependencies>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>com.influxdb</groupId>
 | 
				
			||||||
 | 
					            <artifactId>influxdb-client-java</artifactId>
 | 
				
			||||||
 | 
					            <version>6.3.0</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <!--- begin -->
 | 
				
			||||||
 | 
					<!--        <dependency>-->
 | 
				
			||||||
 | 
					<!--            <groupId>org.springframework.boot</groupId>-->
 | 
				
			||||||
 | 
					<!--            <artifactId>spring-boot-starter-test</artifactId>-->
 | 
				
			||||||
 | 
					<!--            <scope>test</scope>-->
 | 
				
			||||||
 | 
					<!--        </dependency>-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!--        <dependency>-->
 | 
				
			||||||
 | 
					<!--            <groupId>org.hibernate.validator</groupId>-->
 | 
				
			||||||
 | 
					<!--            <artifactId>hibernate-validator</artifactId>-->
 | 
				
			||||||
 | 
					<!--        </dependency>-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!--        <dependency>-->
 | 
				
			||||||
 | 
					<!--            <groupId>com.squareup.okhttp3</groupId>-->
 | 
				
			||||||
 | 
					<!--            <artifactId>okhttp</artifactId>-->
 | 
				
			||||||
 | 
					<!--            <version>4.9.3</version>-->
 | 
				
			||||||
 | 
					<!--        </dependency>-->
 | 
				
			||||||
 | 
					<!--        <dependency>-->
 | 
				
			||||||
 | 
					<!--            <groupId>org.mockito</groupId>-->
 | 
				
			||||||
 | 
					<!--            <artifactId>mockito-core</artifactId>-->
 | 
				
			||||||
 | 
					<!--            <version>4.4.0</version>-->
 | 
				
			||||||
 | 
					<!--            <scope>test</scope>-->
 | 
				
			||||||
 | 
					<!--        </dependency>-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <!--        <dependency>-->
 | 
				
			||||||
 | 
					<!--            <groupId>org.springframework.boot</groupId>-->
 | 
				
			||||||
 | 
					<!--            <artifactId>spring-boot-actuator-autoconfigure</artifactId>-->
 | 
				
			||||||
 | 
					<!--            <version>2.7.0</version>-->
 | 
				
			||||||
 | 
					<!--            <optional>true</optional>-->
 | 
				
			||||||
 | 
					<!--            <exclusions>-->
 | 
				
			||||||
 | 
					<!--                <exclusion>-->
 | 
				
			||||||
 | 
					<!--                    <groupId>com.fasterxml.jackson.core</groupId>-->
 | 
				
			||||||
 | 
					<!--                    <artifactId>jackson-databind</artifactId>-->
 | 
				
			||||||
 | 
					<!--                </exclusion>-->
 | 
				
			||||||
 | 
					<!--            </exclusions>-->
 | 
				
			||||||
 | 
					<!--        </dependency>-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!--        <dependency>-->
 | 
				
			||||||
 | 
					<!--            <groupId>org.springframework.boot</groupId>-->
 | 
				
			||||||
 | 
					<!--            <artifactId>spring-boot-configuration-processor</artifactId>-->
 | 
				
			||||||
 | 
					<!--            <version>2.7.0</version>-->
 | 
				
			||||||
 | 
					<!--            <optional>true</optional>-->
 | 
				
			||||||
 | 
					<!--        </dependency>-->
 | 
				
			||||||
 | 
					        <!--- end -->
 | 
				
			||||||
 | 
					    </dependencies>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										54
									
								
								ym-influx/src/main/java/Main2.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								ym-influx/src/main/java/Main2.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					import com.cnbm.influx.config.InfluxClient;
 | 
				
			||||||
 | 
					import com.cnbm.influx.template.Event;
 | 
				
			||||||
 | 
					import com.influxdb.client.InfluxDBClient;
 | 
				
			||||||
 | 
					import com.influxdb.client.InfluxDBClientFactory;
 | 
				
			||||||
 | 
					import com.influxdb.client.WriteApi;
 | 
				
			||||||
 | 
					import com.influxdb.client.domain.WritePrecision;
 | 
				
			||||||
 | 
					import com.influxdb.client.write.Point;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.time.Instant;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Desc: ""
 | 
				
			||||||
 | 
					 * @Author: caixiang
 | 
				
			||||||
 | 
					 * @DATE: 2022/7/1 16:39
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class Main2 {
 | 
				
			||||||
 | 
					    public static void main(String[] args) {
 | 
				
			||||||
 | 
					        //方式1
 | 
				
			||||||
 | 
					        Point point = Point.measurement("ASProcessCompleteEvent")
 | 
				
			||||||
 | 
					                .addTag("transationId", "112311")
 | 
				
			||||||
 | 
					                .addTag("argName", "argName11")
 | 
				
			||||||
 | 
					                .addField("argValue", 3D)
 | 
				
			||||||
 | 
					                .time(Instant.now().toEpochMilli(), WritePrecision.MS);
 | 
				
			||||||
 | 
					        InfluxClient.Client.getWriteApi().writePoint(point);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//        //方式2
 | 
				
			||||||
 | 
					//        char[] token = "lkBsC27QZr1W50BSPlGxpTqNNpwuUk5uz1dZZRPSPbCG5VmNDDUo8P3UkZIhGWwfJwkuz6ZGZ7Et4_KBaG3gHw==".toCharArray();
 | 
				
			||||||
 | 
					//        String org = "qgs";
 | 
				
			||||||
 | 
					//        String bucket = "mytest";
 | 
				
			||||||
 | 
					//        InfluxDBClient influxDBClient = InfluxDBClientFactory.create("http://192.168.0.170:8086", token, org, bucket);
 | 
				
			||||||
 | 
					//        WriteApi writeApi = influxDBClient.makeWriteApi();
 | 
				
			||||||
 | 
					//        Point point = Point.measurement("ASProcessCompleteEvent")
 | 
				
			||||||
 | 
					//                .addTag("transationId", "112311")
 | 
				
			||||||
 | 
					//                .addTag("argName", "argName11")
 | 
				
			||||||
 | 
					//                .addField("argValue", 7D)
 | 
				
			||||||
 | 
					//                .time(Instant.now().toEpochMilli(), WritePrecision.MS);
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//        Point point2 = Point.measurement("ASProcessCompleteEvent")
 | 
				
			||||||
 | 
					//                .addTag("transationId", "222312")
 | 
				
			||||||
 | 
					//                .addTag("argName", "argName11")
 | 
				
			||||||
 | 
					//                .addField("argValue", 8D)
 | 
				
			||||||
 | 
					//                .time(Instant.now().toEpochMilli(), WritePrecision.MS);
 | 
				
			||||||
 | 
					//        List<Point> list = new ArrayList<>();
 | 
				
			||||||
 | 
					//        list.add(point);
 | 
				
			||||||
 | 
					//        list.add(point2);
 | 
				
			||||||
 | 
					//        writeApi.writePoints(list);
 | 
				
			||||||
 | 
					//        //一定要close ,不如write 不了数据
 | 
				
			||||||
 | 
					//        influxDBClient.close();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										214
									
								
								ym-influx/src/main/java/com/cnbm/influx/Main.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										214
									
								
								ym-influx/src/main/java/com/cnbm/influx/Main.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,214 @@
 | 
				
			|||||||
 | 
					package com.cnbm.influx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.cnbm.influx.config.InfluxClient;
 | 
				
			||||||
 | 
					import com.cnbm.influx.param.QueryDataParam;
 | 
				
			||||||
 | 
					import com.cnbm.influx.common.Utils;
 | 
				
			||||||
 | 
					import com.cnbm.influx.param.PageInfo;
 | 
				
			||||||
 | 
					import com.cnbm.influx.param.Range;
 | 
				
			||||||
 | 
					import com.cnbm.influx.param.Tag;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.cnbm.influx.template.Event;
 | 
				
			||||||
 | 
					import com.influxdb.client.*;
 | 
				
			||||||
 | 
					import com.influxdb.client.domain.WritePrecision;
 | 
				
			||||||
 | 
					import com.influxdb.client.write.Point;
 | 
				
			||||||
 | 
					import com.influxdb.query.FluxRecord;
 | 
				
			||||||
 | 
					import com.influxdb.query.FluxTable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.text.SimpleDateFormat;
 | 
				
			||||||
 | 
					import java.time.Instant;
 | 
				
			||||||
 | 
					import java.util.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Desc: ""
 | 
				
			||||||
 | 
					 * @Author: caixiang
 | 
				
			||||||
 | 
					 * @DATE: 2022/6/25 11:19
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class Main {
 | 
				
			||||||
 | 
					    public static void main(String[] args) throws InterruptedException {
 | 
				
			||||||
 | 
					        char[] token = "lkBsC27QZr1W50BSPlGxpTqNNpwuUk5uz1dZZRPSPbCG5VmNDDUo8P3UkZIhGWwfJwkuz6ZGZ7Et4_KBaG3gHw==".toCharArray();
 | 
				
			||||||
 | 
					        String org = "qgs";
 | 
				
			||||||
 | 
					        String bucket = "mytest";
 | 
				
			||||||
 | 
					        InfluxDBClient influxDBClient = InfluxDBClientFactory.create("http://192.168.0.170:8086", token, org, bucket);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        WriteApi writeApi = influxDBClient.makeWriteApi();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//        InfluxService influxService = new InfluxService();
 | 
				
			||||||
 | 
					//        Event event = new Event();
 | 
				
			||||||
 | 
					//        event.time = Instant.now();
 | 
				
			||||||
 | 
					//        event.transationId = "asas";
 | 
				
			||||||
 | 
					//        event.argName = "arg5";
 | 
				
			||||||
 | 
					//        event.argValue = new Double(11);
 | 
				
			||||||
 | 
					//        influxService.insert(event);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//        Event event = new Event();
 | 
				
			||||||
 | 
					//        event.setTime(Instant.now());
 | 
				
			||||||
 | 
					//        event.setTransationId("asasd11");
 | 
				
			||||||
 | 
					//        event.setArgName("argName11");
 | 
				
			||||||
 | 
					//        event.setArgValue(3d);
 | 
				
			||||||
 | 
					//        InfluxClient.Client.insert(event,"ASProcessCompleteEvent");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Point point = Point.measurement("ASProcessCompleteEvent")
 | 
				
			||||||
 | 
					                .addTag("transationId", "112311")
 | 
				
			||||||
 | 
					                .addTag("argName", "argName11")
 | 
				
			||||||
 | 
					                .addField("argValue", 3D)
 | 
				
			||||||
 | 
					                .time(Instant.now().toEpochMilli(), WritePrecision.MS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Point point2 = Point.measurement("ASProcessCompleteEvent")
 | 
				
			||||||
 | 
					                .addTag("transationId", "222312")
 | 
				
			||||||
 | 
					                .addTag("argName", "argName11")
 | 
				
			||||||
 | 
					                .addField("argValue", 4D)
 | 
				
			||||||
 | 
					                .time(Instant.now().toEpochMilli(), WritePrecision.MS);
 | 
				
			||||||
 | 
					        List<Point> list = new ArrayList<>();
 | 
				
			||||||
 | 
					        list.add(point);
 | 
				
			||||||
 | 
					        list.add(point2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        writeApi.writePoints(list);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //todo         api.writeMeasurements(WritePrecision.NS, Arrays.asList(new H2OFeetMeasurement("coyote_creek", 15.0D, null, Instant.ofEpochSecond(0, 15)), new H2OFeetMeasurement("coyote_creek", 16.0D, null, Instant.ofEpochSecond(0, 16))));
 | 
				
			||||||
 | 
					//        List<Event> events = new ArrayList<>();
 | 
				
			||||||
 | 
					//        for(int i=0;i<99;i++){
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//            Event event = new Event();
 | 
				
			||||||
 | 
					//            event.time = Instant.now();
 | 
				
			||||||
 | 
					//            event.transationId = "asas"+i;
 | 
				
			||||||
 | 
					//            event.argName = "arg7";
 | 
				
			||||||
 | 
					//            event.argValue = new Double(i);
 | 
				
			||||||
 | 
					//            events.add(event);
 | 
				
			||||||
 | 
					//        }
 | 
				
			||||||
 | 
					//        List<Event> qList = new ArrayList<>();
 | 
				
			||||||
 | 
					//        Event event = new Event();
 | 
				
			||||||
 | 
					//        event.time = Instant.now();
 | 
				
			||||||
 | 
					//        event.transationId = "asas";
 | 
				
			||||||
 | 
					//        event.argName = "arg7";
 | 
				
			||||||
 | 
					//        event.argValue = new Double(1);
 | 
				
			||||||
 | 
					//        Thread.sleep(100);
 | 
				
			||||||
 | 
					//        Event event2 = new Event();
 | 
				
			||||||
 | 
					//        event2.time = Instant.now();
 | 
				
			||||||
 | 
					//        event2.transationId = "asas";
 | 
				
			||||||
 | 
					//        event2.argName = "arg7";
 | 
				
			||||||
 | 
					//        event2.argValue = new Double(2);
 | 
				
			||||||
 | 
					//        qList.add(event);
 | 
				
			||||||
 | 
					//        qList.add(event2);
 | 
				
			||||||
 | 
					//        writeApi.writeMeasurement( WritePrecision.NS, qList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//        for(int i=0;i<10;i++){
 | 
				
			||||||
 | 
					//            Temperature temperature = new Temperature();
 | 
				
			||||||
 | 
					//            temperature.location = "south";
 | 
				
			||||||
 | 
					//            temperature.value = new Double(i);
 | 
				
			||||||
 | 
					//            temperature.type = "equipment3";
 | 
				
			||||||
 | 
					//            temperature.time = Instant.now();
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//            writeApi.writeMeasurement( WritePrecision.NS, temperature);
 | 
				
			||||||
 | 
					//        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//        String flux = "from(bucket:\"mytest\") |> range(start: -60m)";
 | 
				
			||||||
 | 
					//        flux += "|> filter(fn: (r) =>\n" +
 | 
				
			||||||
 | 
					//                "    r._measurement == \"ASProcessCompleteEvent\" and \n" +
 | 
				
			||||||
 | 
					////              "    r._field == \"type\" and \n" +              //对应 Field key
 | 
				
			||||||
 | 
					//                "    r.argName == \"arg3\"\n" +                    //对应 Tags key (Tag 信息无法在FluxRecord 里面获取。)
 | 
				
			||||||
 | 
					//                "  )";
 | 
				
			||||||
 | 
					//        QueryApi queryApi = influxDBClient.getQueryApi();
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//        List<FluxTable> tables = queryApi.query(flux);
 | 
				
			||||||
 | 
					//        for (FluxTable fluxTable : tables) {
 | 
				
			||||||
 | 
					//            List<FluxRecord> records = fluxTable.getRecords();
 | 
				
			||||||
 | 
					//            for (FluxRecord fluxRecord : records) {
 | 
				
			||||||
 | 
					//                System.out.println("time: "+fluxRecord.getTime() +"   key:"+fluxRecord.getField()+"   value: " + fluxRecord.getValueByKey("_value")+"   measurement: " + fluxRecord.getMeasurement());
 | 
				
			||||||
 | 
					////                System.out.println("time: "+fluxRecord.getTime() +"   key:"++"   value: " + fluxRecord.getValueByKey("_value")+"   measurement: " + fluxRecord.getMeasurement());
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//            }
 | 
				
			||||||
 | 
					//        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//        from(bucket: "mytest")
 | 
				
			||||||
 | 
					//          |> range(start: 2022-06-29T11:30:00Z, stop: 2022-06-29T12:30:00Z)
 | 
				
			||||||
 | 
					//          |> filter(fn: (r) => r["_measurement"] == "ASProcessCompleteEvent")
 | 
				
			||||||
 | 
					//          |> filter(fn: (r) => r["argName"] == "arg4")
 | 
				
			||||||
 | 
					//          |> drop(columns: ["transationId"])
 | 
				
			||||||
 | 
					//          |> sort(columns: ["_time"], desc: true)
 | 
				
			||||||
 | 
					//          取前10条数据
 | 
				
			||||||
 | 
					//          |> limit(n: 10, offset: 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//          取 10-20 条数据
 | 
				
			||||||
 | 
					//          |> limit(n: 10, offset: 10)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//          取 20-30 条数据
 | 
				
			||||||
 | 
					//          |> limit(n: 10, offset: 20)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//        QueryDataParam queryDataParam = new QueryDataParam();
 | 
				
			||||||
 | 
					//        queryDataParam.setBucket("mytest");
 | 
				
			||||||
 | 
					//        queryDataParam.setRange(new Range(getDate().toInstant(),new Date().toInstant()));
 | 
				
			||||||
 | 
					//        queryDataParam.setMeasurement("ASProcessCompleteEvent");
 | 
				
			||||||
 | 
					//        queryDataParam.setTag(new Tag("argName","arg4"));
 | 
				
			||||||
 | 
					//        queryDataParam.setDropedTagName("transationId");
 | 
				
			||||||
 | 
					//        queryDataParam.setPageInfo(new PageInfo(1,100));
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//        List<FluxTable> tables = query(queryDataParam,influxDBClient);
 | 
				
			||||||
 | 
					//        List<FluxRecord> records1 = tables.get(0).getRecords();
 | 
				
			||||||
 | 
					//        List<List<FluxRecord>> lists = Utils.fixedGroup(records1, 10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//        for (FluxTable fluxTable : tables) {
 | 
				
			||||||
 | 
					//            List<FluxRecord> records = fluxTable.getRecords();
 | 
				
			||||||
 | 
					//            for (FluxRecord fluxRecord : records) {
 | 
				
			||||||
 | 
					//                System.out.println("time: "+fluxRecord.getTime() +"   key:"+fluxRecord.getField()+"   value: " + fluxRecord.getValueByKey("_value")+"   measurement: " + fluxRecord.getMeasurement());
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//            }
 | 
				
			||||||
 | 
					//        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        influxDBClient.close();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static Date getDate(){
 | 
				
			||||||
 | 
					        Date date = new Date();//获取当前日期
 | 
				
			||||||
 | 
					        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//格式化一下
 | 
				
			||||||
 | 
					        Calendar calendar1 = Calendar.getInstance();//获取对日期操作的类对象
 | 
				
			||||||
 | 
					        //两种写法都可以获取到前三天的日期
 | 
				
			||||||
 | 
					        // calendar1.set(Calendar.DAY_OF_YEAR,calendar1.get(Calendar.DAY_OF_YEAR) -3);
 | 
				
			||||||
 | 
					        //在当前时间的基础上获取前三天的日期
 | 
				
			||||||
 | 
					        calendar1.add(Calendar.DATE, -3);
 | 
				
			||||||
 | 
					        //add方法 参数也可传入 月份,获取的是前几月或后几月的日期
 | 
				
			||||||
 | 
					        //calendar1.add(Calendar.MONTH, -3);
 | 
				
			||||||
 | 
					        Date day = calendar1.getTime();
 | 
				
			||||||
 | 
					        return day;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static List<FluxTable> query(QueryDataParam param,InfluxDBClient influxDBClient){
 | 
				
			||||||
 | 
					        String measurement = param.getMeasurement();
 | 
				
			||||||
 | 
					        String dropedTagName = param.getDropedTagName();
 | 
				
			||||||
 | 
					        Range range = param.getRange();
 | 
				
			||||||
 | 
					        String bucket = param.getBucket();
 | 
				
			||||||
 | 
					        String tagName = param.getTag().getTagName();
 | 
				
			||||||
 | 
					        String tagValue = param.getTag().getTagValue();
 | 
				
			||||||
 | 
					        PageInfo pageInfo = param.getPageInfo();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String flux = "from(bucket:\""+bucket+"\")";
 | 
				
			||||||
 | 
					        flux += "|> range(start: "+range.getBegin().toString()+",stop:"+range.getEnd().toString()+")  \n";
 | 
				
			||||||
 | 
					        flux += "|> filter(fn: (r) => r[\"_measurement\"] == \""+measurement+"\")  \n";
 | 
				
			||||||
 | 
					        flux += "|> filter(fn: (r) => r[\""+tagName+"\"] == \""+tagValue+"\")  \n";
 | 
				
			||||||
 | 
					        flux += "|> drop(columns: [\""+dropedTagName+"\"])  \n";
 | 
				
			||||||
 | 
					        flux += "|> sort(columns: [\"_time\"], desc: true) \n";
 | 
				
			||||||
 | 
					        if(pageInfo!=null){
 | 
				
			||||||
 | 
					            flux += "|> limit(n: "+pageInfo.getSize()+", offset: "+(pageInfo.getCurrent()-1)* pageInfo.getSize()+")";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        QueryApi queryApi = influxDBClient.getQueryApi();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<FluxTable> tables = queryApi.query(flux);
 | 
				
			||||||
 | 
					        for (FluxTable fluxTable : tables) {
 | 
				
			||||||
 | 
					            List<FluxRecord> records = fluxTable.getRecords();
 | 
				
			||||||
 | 
					            for (FluxRecord fluxRecord : records) {
 | 
				
			||||||
 | 
					                System.out.println("time: "+fluxRecord.getTime() +"   key:"+fluxRecord.getField()+"   value: " + fluxRecord.getValueByKey("_value")+"   measurement: " + fluxRecord.getMeasurement());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return tables;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										69
									
								
								ym-influx/src/main/java/com/cnbm/influx/common/Utils.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								ym-influx/src/main/java/com/cnbm/influx/common/Utils.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,69 @@
 | 
				
			|||||||
 | 
					package com.cnbm.influx.common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.text.SimpleDateFormat;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.Calendar;
 | 
				
			||||||
 | 
					import java.util.Date;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Desc: ""
 | 
				
			||||||
 | 
					 * @Author: caixiang
 | 
				
			||||||
 | 
					 * @DATE: 2022/6/29 16:23
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class Utils {
 | 
				
			||||||
 | 
					    public static void main(String[] args) {
 | 
				
			||||||
 | 
					        ArrayList<Integer> arrs = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for(int i=0;i<100;i++){
 | 
				
			||||||
 | 
					            arrs.add(i);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        List<List<Integer>> lists = fixedGroup(arrs, 10);
 | 
				
			||||||
 | 
					        System.out.println();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static Date getBeforeDate(Integer number){
 | 
				
			||||||
 | 
					        Date date = new Date();//获取当前日期
 | 
				
			||||||
 | 
					        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//格式化一下
 | 
				
			||||||
 | 
					        Calendar calendar1 = Calendar.getInstance();//获取对日期操作的类对象
 | 
				
			||||||
 | 
					        //两种写法都可以获取到前三天的日期
 | 
				
			||||||
 | 
					        // calendar1.set(Calendar.DAY_OF_YEAR,calendar1.get(Calendar.DAY_OF_YEAR) -3);
 | 
				
			||||||
 | 
					        //在当前时间的基础上获取前三天的日期
 | 
				
			||||||
 | 
					        calendar1.add(Calendar.DATE, 0-number);
 | 
				
			||||||
 | 
					        //add方法 参数也可传入 月份,获取的是前几月或后几月的日期
 | 
				
			||||||
 | 
					        //calendar1.add(Calendar.MONTH, -3);
 | 
				
			||||||
 | 
					        Date day = calendar1.getTime();
 | 
				
			||||||
 | 
					        return day;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 将一组数据固定分组,每组n个元素
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param source 要分组的数据源
 | 
				
			||||||
 | 
					     * @param limit      每组n个元素
 | 
				
			||||||
 | 
					     * @param <T>
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static <T> List<List<T>> fixedGroup(List<T> source, int limit) {
 | 
				
			||||||
 | 
					        if (null == source || source.size() == 0 || limit <= 0)
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        List<List<T>> result = new ArrayList<List<T>>();
 | 
				
			||||||
 | 
					        int remainder = source.size() % limit;
 | 
				
			||||||
 | 
					        int size = (source.size() / limit);
 | 
				
			||||||
 | 
					        for (int i = 0; i < size; i++) {
 | 
				
			||||||
 | 
					            List<T> subset = null;
 | 
				
			||||||
 | 
					            subset = source.subList(i * limit, (i + 1) * limit);
 | 
				
			||||||
 | 
					            result.add(subset);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (remainder > 0) {
 | 
				
			||||||
 | 
					            List<T> subset = null;
 | 
				
			||||||
 | 
					            subset = source.subList(size * limit, size * limit + remainder);
 | 
				
			||||||
 | 
					            result.add(subset);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return result;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										133
									
								
								ym-influx/src/main/java/com/cnbm/influx/config/InfluxClient.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								ym-influx/src/main/java/com/cnbm/influx/config/InfluxClient.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,133 @@
 | 
				
			|||||||
 | 
					package com.cnbm.influx.config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.cnbm.influx.constant.Constant;
 | 
				
			||||||
 | 
					import com.cnbm.influx.param.PageInfo;
 | 
				
			||||||
 | 
					import com.cnbm.influx.param.QueryDataParam;
 | 
				
			||||||
 | 
					import com.cnbm.influx.param.Range;
 | 
				
			||||||
 | 
					import com.cnbm.influx.template.Event;
 | 
				
			||||||
 | 
					import com.influxdb.client.InfluxDBClient;
 | 
				
			||||||
 | 
					import com.influxdb.client.InfluxDBClientFactory;
 | 
				
			||||||
 | 
					import com.influxdb.client.QueryApi;
 | 
				
			||||||
 | 
					import com.influxdb.client.WriteApi;
 | 
				
			||||||
 | 
					import com.influxdb.client.domain.WritePrecision;
 | 
				
			||||||
 | 
					import com.influxdb.client.write.Point;
 | 
				
			||||||
 | 
					import com.influxdb.query.FluxTable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public enum InfluxClient {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * influxdb 读写客户端,,如果write比较繁忙,后续可以考虑,维护 client一个线程池。
 | 
				
			||||||
 | 
					     * */
 | 
				
			||||||
 | 
					    Client("http://192.168.0.170:8086","lkBsC27QZr1W50BSPlGxpTqNNpwuUk5uz1dZZRPSPbCG5VmNDDUo8P3UkZIhGWwfJwkuz6ZGZ7Et4_KBaG3gHw==","qgs","qgs-bucket"),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ;
 | 
				
			||||||
 | 
					    private String url;
 | 
				
			||||||
 | 
					    private String token;
 | 
				
			||||||
 | 
					    private String org;
 | 
				
			||||||
 | 
					    private String bucket;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private InfluxDBClient influxDBClient;
 | 
				
			||||||
 | 
					    private WriteApi writeApi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private QueryApi queryApi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    InfluxClient(String url,String token,String org,String bucket){
 | 
				
			||||||
 | 
					        this.url = url;
 | 
				
			||||||
 | 
					        this.token = token;
 | 
				
			||||||
 | 
					        this.org = org;
 | 
				
			||||||
 | 
					        this.bucket = bucket;
 | 
				
			||||||
 | 
					        this.influxDBClient = InfluxDBClientFactory.create(this.url, this.token.toCharArray(),this.org,this.bucket);
 | 
				
			||||||
 | 
					        this.writeApi = influxDBClient.makeWriteApi();
 | 
				
			||||||
 | 
					        this.queryApi = influxDBClient.getQueryApi();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public QueryApi getQueryApi() {
 | 
				
			||||||
 | 
					        return queryApi;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public WriteApi getWriteApi() {
 | 
				
			||||||
 | 
					        return writeApi;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 测试连接是否正常
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     *      true    服务正常健康
 | 
				
			||||||
 | 
					     *      false   异常
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private boolean ping() {
 | 
				
			||||||
 | 
					        boolean isConnected = false;
 | 
				
			||||||
 | 
					        Boolean pong;
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            pong = influxDBClient.ping();
 | 
				
			||||||
 | 
					            if (pong != null) {
 | 
				
			||||||
 | 
					                isConnected = true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } catch (Exception e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return isConnected;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void insert(Event event, String measurement){
 | 
				
			||||||
 | 
					        Point point = Point.measurement(measurement)
 | 
				
			||||||
 | 
					                .addTag("transationId", event.getTransationId())
 | 
				
			||||||
 | 
					                .addTag("argName", event.getArgName())
 | 
				
			||||||
 | 
					                .addField("argValue", event.getArgValue())
 | 
				
			||||||
 | 
					                .time(event.getTime().toEpochMilli(), WritePrecision.MS);
 | 
				
			||||||
 | 
					        writeApi.writePoint(point);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //异步 批量写入数据
 | 
				
			||||||
 | 
					    //如果要批量插入的话,一次也只能写入
 | 
				
			||||||
 | 
					    public void batchInsert(List<Event> events, String measurement){
 | 
				
			||||||
 | 
					        List<Point> list = new ArrayList<>();
 | 
				
			||||||
 | 
					        for(Event event:events){
 | 
				
			||||||
 | 
					            Point point = Point.measurement(measurement)
 | 
				
			||||||
 | 
					                    .addTag("transationId", event.getTransationId())
 | 
				
			||||||
 | 
					                    .addTag("argName", event.getArgName())
 | 
				
			||||||
 | 
					                    .addField("argValue", event.getArgValue())
 | 
				
			||||||
 | 
					                    .time(event.getTime().toEpochMilli(), WritePrecision.MS);
 | 
				
			||||||
 | 
					            list.add(point);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        writeApi.writePoints(list);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<FluxTable> query(QueryDataParam param){
 | 
				
			||||||
 | 
					        String measurement = param.getMeasurement();
 | 
				
			||||||
 | 
					        String dropedTagName = param.getDropedTagName();
 | 
				
			||||||
 | 
					        Range range = param.getRange();
 | 
				
			||||||
 | 
					        String bucket = param.getBucket();
 | 
				
			||||||
 | 
					        String tagName = param.getTag().getTagName();
 | 
				
			||||||
 | 
					        String tagValue = param.getTag().getTagValue();
 | 
				
			||||||
 | 
					        PageInfo pageInfo = param.getPageInfo();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String flux = "from(bucket:\""+bucket+"\")";
 | 
				
			||||||
 | 
					        flux += "|> range(start: "+range.getBegin()+",stop:"+range.getEnd()+")";
 | 
				
			||||||
 | 
					        flux += "|> filter(fn: (r) => r[\"_measurement\"] == \""+measurement+"\")";
 | 
				
			||||||
 | 
					        flux += "|> filter(fn: (r) => r[\""+tagName+"\"] == \""+tagValue+"\")";
 | 
				
			||||||
 | 
					        flux += "|> drop(columns: [\""+dropedTagName+"\"])";
 | 
				
			||||||
 | 
					        flux += "|> sort(columns: [\"_time\"], desc: true)";
 | 
				
			||||||
 | 
					        if(pageInfo!=null){
 | 
				
			||||||
 | 
					            flux += "|> limit(n: "+pageInfo.getSize()+", offset: "+(pageInfo.getCurrent()-1)* pageInfo.getSize()+")";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//        List<FluxTable> tables = queryApi.query(flux);
 | 
				
			||||||
 | 
					//        for (FluxTable fluxTable : tables) {
 | 
				
			||||||
 | 
					//            List<FluxRecord> records = fluxTable.getRecords();
 | 
				
			||||||
 | 
					//            for (FluxRecord fluxRecord : records) {
 | 
				
			||||||
 | 
					//                System.out.println("time: "+fluxRecord.getTime() +"   key:"+fluxRecord.getField()+"   value: " + fluxRecord.getValueByKey("_value")+"   measurement: " + fluxRecord.getMeasurement());
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//            }
 | 
				
			||||||
 | 
					//        }
 | 
				
			||||||
 | 
					        return queryApi.query(flux);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					package com.cnbm.influx.constant;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.influxdb.LogLevel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Desc: ""
 | 
				
			||||||
 | 
					 * @Author: caixiang
 | 
				
			||||||
 | 
					 * @DATE: 2022/7/1 9:18
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class Constant {
 | 
				
			||||||
 | 
					    public static final String url = "http://192.168.0.170:8086";
 | 
				
			||||||
 | 
					    public static final String token = "lkBsC27QZr1W50BSPlGxpTqNNpwuUk5uz1dZZRPSPbCG5VmNDDUo8P3UkZIhGWwfJwkuz6ZGZ7Et4_KBaG3gHw==";
 | 
				
			||||||
 | 
					    public static final String org = "qgs";
 | 
				
			||||||
 | 
					    public static final String bucket = "qgs-bucket";
 | 
				
			||||||
 | 
					    public static final String username = "caixiang";
 | 
				
			||||||
 | 
					    public static final String password = "25112856";
 | 
				
			||||||
 | 
					    public static final LogLevel logLevel = LogLevel.BODY;
 | 
				
			||||||
 | 
					    public static final LogLevel readTimeout = LogLevel.BODY;
 | 
				
			||||||
 | 
					    public static final LogLevel writeTimeout = LogLevel.BODY;
 | 
				
			||||||
 | 
					    public static final LogLevel connectTimeout = LogLevel.BODY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,78 @@
 | 
				
			|||||||
 | 
					package com.cnbm.influx.controller;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.cnbm.influx.config.InfluxClient;
 | 
				
			||||||
 | 
					import com.cnbm.influx.template.Event;
 | 
				
			||||||
 | 
					import com.influxdb.client.InfluxDBClient;
 | 
				
			||||||
 | 
					import com.influxdb.client.domain.WritePrecision;
 | 
				
			||||||
 | 
					import com.influxdb.client.write.Point;
 | 
				
			||||||
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
 | 
					import org.slf4j.LoggerFactory;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.PostMapping;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RequestMapping;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RestController;
 | 
				
			||||||
 | 
					import java.time.Instant;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					@RequestMapping("/influx")
 | 
				
			||||||
 | 
					public class S7DemoController {
 | 
				
			||||||
 | 
					    private static final Logger logger = LoggerFactory.getLogger(S7DemoController.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    InfluxDBClient influxDBClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//       try (WriteApi writeApi = influxDBClient.makeWriteApi()) {
 | 
				
			||||||
 | 
					//            Temperature temperature = new Temperature();
 | 
				
			||||||
 | 
					//            temperature.setLocation("east");
 | 
				
			||||||
 | 
					//            temperature.setValue(106.2D);
 | 
				
			||||||
 | 
					//            temperature.setTime(Instant.now());
 | 
				
			||||||
 | 
					//            writeApi.writeMeasurement(WritePrecision.NS,temperature);
 | 
				
			||||||
 | 
					//        }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//        try (WriteApi writeApi = influxDBClient.makeWriteApi()) {
 | 
				
			||||||
 | 
					//            Point point = Point.measurement("temperature")
 | 
				
			||||||
 | 
					//                    .addTag("location","south")
 | 
				
			||||||
 | 
					//                    .addTag("owner","wxm")
 | 
				
			||||||
 | 
					//                    .addField("wxm",230.8);
 | 
				
			||||||
 | 
					//            writeApi.writePoint(point);
 | 
				
			||||||
 | 
					//        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @PostMapping("/insertBatch")
 | 
				
			||||||
 | 
					    public void insertBatch() throws InterruptedException {
 | 
				
			||||||
 | 
					//        List<Event> list = new ArrayList<>();
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//        for(int i=0;i<99;i++){
 | 
				
			||||||
 | 
					//            //Thread.sleep(1000);
 | 
				
			||||||
 | 
					//            Event event = new Event();
 | 
				
			||||||
 | 
					//            event.time = Instant.now();
 | 
				
			||||||
 | 
					//            event.transationId = "asas"+i;
 | 
				
			||||||
 | 
					//            event.argName = "arg5";
 | 
				
			||||||
 | 
					//            event.argValue = new Double(i);
 | 
				
			||||||
 | 
					//            list.add(event);
 | 
				
			||||||
 | 
					//        }
 | 
				
			||||||
 | 
					//        influxService.batchInsert(list);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Point insert(Event event, String measurement){
 | 
				
			||||||
 | 
					        Point point = Point.measurement(measurement)
 | 
				
			||||||
 | 
					                .addTag("transationId", event.getTransationId())
 | 
				
			||||||
 | 
					                .addTag("argName", event.getArgName())
 | 
				
			||||||
 | 
					                .addField("argValue", event.getArgValue())
 | 
				
			||||||
 | 
					                .time(event.getTime().toEpochMilli(), WritePrecision.MS);
 | 
				
			||||||
 | 
					        return point;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    @PostMapping("/insert")
 | 
				
			||||||
 | 
					    public void insert() throws InterruptedException {
 | 
				
			||||||
 | 
					        Event event = new Event();
 | 
				
			||||||
 | 
					        event.setTime(Instant.now());
 | 
				
			||||||
 | 
					        event.setTransationId("asasd11");
 | 
				
			||||||
 | 
					        event.setArgName("argName11");
 | 
				
			||||||
 | 
					        event.setArgValue(7d);
 | 
				
			||||||
 | 
					        Point asProcessCompleteEvent = insert(event, "ASProcessCompleteEvent");
 | 
				
			||||||
 | 
					        influxDBClient.makeWriteApi().writePoint(asProcessCompleteEvent);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										30
									
								
								ym-influx/src/main/java/com/cnbm/influx/entity/Header.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								ym-influx/src/main/java/com/cnbm/influx/entity/Header.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					package com.cnbm.influx.entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Desc: ""
 | 
				
			||||||
 | 
					 * @Author: caixiang
 | 
				
			||||||
 | 
					 * @DATE: 2022/6/27 10:46
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					public class Header {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String transationId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String messageName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String messageType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String fromWhere;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String toWhere;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String equipmentId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String sendTimestamp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String argName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Double argValue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * The MIT License
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					 * in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					 * copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					 * furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice shall be included in
 | 
				
			||||||
 | 
					 * all copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
				
			||||||
 | 
					 * THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package com.cnbm.influx.health;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.influxdb.client.InfluxDBClient;
 | 
				
			||||||
 | 
					import org.springframework.boot.actuate.health.AbstractHealthIndicator;
 | 
				
			||||||
 | 
					import org.springframework.boot.actuate.health.Health;
 | 
				
			||||||
 | 
					import org.springframework.util.Assert;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * {@link //HealthIndicator} for InfluxDB 2.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Jakub Bednar (bednar@github)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class InfluxDB2HealthIndicator extends AbstractHealthIndicator {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final InfluxDBClient influxDBClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public InfluxDB2HealthIndicator(final InfluxDBClient influxDBClient) {
 | 
				
			||||||
 | 
					        super("InfluxDBClient 2 health check failed");
 | 
				
			||||||
 | 
					        Assert.notNull(influxDBClient, "InfluxDBClient must not be null");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        this.influxDBClient = influxDBClient;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    protected void doHealthCheck(final Health.Builder builder) {
 | 
				
			||||||
 | 
					        boolean success = this.influxDBClient.ping();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (success) {
 | 
				
			||||||
 | 
					            builder.up();
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            builder.down();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * The MIT License
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					 * in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					 * copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					 * furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice shall be included in
 | 
				
			||||||
 | 
					 * all copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
				
			||||||
 | 
					 * THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package com.cnbm.influx.health;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.cnbm.influx.influx.InfluxDB2AutoConfiguration;
 | 
				
			||||||
 | 
					import com.influxdb.client.InfluxDBClient;
 | 
				
			||||||
 | 
					import org.springframework.boot.actuate.autoconfigure.health.CompositeHealthContributorConfiguration;
 | 
				
			||||||
 | 
					import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator;
 | 
				
			||||||
 | 
					import org.springframework.boot.actuate.health.HealthContributor;
 | 
				
			||||||
 | 
					import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 | 
				
			||||||
 | 
					import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 | 
				
			||||||
 | 
					import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 | 
				
			||||||
 | 
					import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 | 
				
			||||||
 | 
					import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Configuration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * {@link EnableAutoConfiguration Auto-configuration} for {@link InfluxDB2HealthIndicator}.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Jakub Bednar
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Configuration(proxyBeanMethods = false)
 | 
				
			||||||
 | 
					@ConditionalOnClass(InfluxDBClient.class)
 | 
				
			||||||
 | 
					@ConditionalOnBean(InfluxDBClient.class)
 | 
				
			||||||
 | 
					@ConditionalOnEnabledHealthIndicator("influx")
 | 
				
			||||||
 | 
					@AutoConfigureAfter(InfluxDB2AutoConfiguration.class)
 | 
				
			||||||
 | 
					public class InfluxDB2HealthIndicatorAutoConfiguration
 | 
				
			||||||
 | 
					        extends CompositeHealthContributorConfiguration<InfluxDB2HealthIndicator, InfluxDBClient> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Bean
 | 
				
			||||||
 | 
					    @ConditionalOnMissingBean(name = { "influxDB2HealthIndicator", "influxDB2HealthContributor" })
 | 
				
			||||||
 | 
					    public HealthContributor influxDbHealthContributor(final Map<String, InfluxDBClient> influxDBClients) {
 | 
				
			||||||
 | 
					        return createContributor(influxDBClients);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * The MIT License
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					 * in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					 * copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					 * furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice shall be included in
 | 
				
			||||||
 | 
					 * all copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
				
			||||||
 | 
					 * THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package com.cnbm.influx.influx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.influxdb.client.InfluxDBClientOptions;
 | 
				
			||||||
 | 
					import okhttp3.OkHttpClient;
 | 
				
			||||||
 | 
					import okhttp3.Protocol;
 | 
				
			||||||
 | 
					import org.springframework.util.StringUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.annotation.Nonnull;
 | 
				
			||||||
 | 
					import java.util.Collections;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @author Jakub Bednar (04/08/2021 11:41)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					abstract class AbstractInfluxDB2AutoConfiguration {
 | 
				
			||||||
 | 
					    protected final InfluxDB2Properties properties;
 | 
				
			||||||
 | 
					    protected final InfluxDB2OkHttpClientBuilderProvider builderProvider;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected AbstractInfluxDB2AutoConfiguration(final InfluxDB2Properties properties,
 | 
				
			||||||
 | 
					                                                 final InfluxDB2OkHttpClientBuilderProvider builderProvider) {
 | 
				
			||||||
 | 
					        this.properties = properties;
 | 
				
			||||||
 | 
					        this.builderProvider = builderProvider;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Nonnull
 | 
				
			||||||
 | 
					    protected InfluxDBClientOptions.Builder makeBuilder() {
 | 
				
			||||||
 | 
					        OkHttpClient.Builder okHttpBuilder;
 | 
				
			||||||
 | 
					        if (builderProvider == null) {
 | 
				
			||||||
 | 
					            okHttpBuilder = new OkHttpClient.Builder()
 | 
				
			||||||
 | 
					                    .protocols(Collections.singletonList(Protocol.HTTP_1_1))
 | 
				
			||||||
 | 
					                    .readTimeout(properties.getReadTimeout())
 | 
				
			||||||
 | 
					                    .writeTimeout(properties.getWriteTimeout())
 | 
				
			||||||
 | 
					                    .connectTimeout(properties.getConnectTimeout());
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            okHttpBuilder = builderProvider.get();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        InfluxDBClientOptions.Builder influxBuilder = InfluxDBClientOptions.builder()
 | 
				
			||||||
 | 
					                .url(properties.getUrl())
 | 
				
			||||||
 | 
					                .bucket(properties.getBucket())
 | 
				
			||||||
 | 
					                .org(properties.getOrg())
 | 
				
			||||||
 | 
					                .okHttpClient(okHttpBuilder);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (StringUtils.hasLength(properties.getToken())) {
 | 
				
			||||||
 | 
					            influxBuilder.authenticateToken(properties.getToken().toCharArray());
 | 
				
			||||||
 | 
					        } else if (StringUtils.hasLength(properties.getUsername()) && StringUtils.hasLength(properties.getPassword())) {
 | 
				
			||||||
 | 
					            influxBuilder.authenticate(properties.getUsername(), properties.getPassword().toCharArray());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return influxBuilder;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,60 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * The MIT License
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					 * in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					 * copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					 * furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice shall be included in
 | 
				
			||||||
 | 
					 * all copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
				
			||||||
 | 
					 * THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package com.cnbm.influx.influx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.influxdb.client.InfluxDBClient;
 | 
				
			||||||
 | 
					import com.influxdb.client.InfluxDBClientFactory;
 | 
				
			||||||
 | 
					import com.influxdb.client.InfluxDBClientOptions;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.ObjectProvider;
 | 
				
			||||||
 | 
					import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 | 
				
			||||||
 | 
					import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 | 
				
			||||||
 | 
					import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 | 
				
			||||||
 | 
					import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 | 
				
			||||||
 | 
					import org.springframework.boot.context.properties.EnableConfigurationProperties;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Configuration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * {@link EnableAutoConfiguration Auto-configuration} for InfluxDB 2.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Jakub Bednar (bednar@github) (06/05/2019 13:09)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Configuration
 | 
				
			||||||
 | 
					@ConditionalOnClass(InfluxDBClient.class)
 | 
				
			||||||
 | 
					@EnableConfigurationProperties(InfluxDB2Properties.class)
 | 
				
			||||||
 | 
					public class InfluxDB2AutoConfiguration extends AbstractInfluxDB2AutoConfiguration {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public InfluxDB2AutoConfiguration(final InfluxDB2Properties properties,
 | 
				
			||||||
 | 
					                                      final ObjectProvider<InfluxDB2OkHttpClientBuilderProvider> builderProvider) {
 | 
				
			||||||
 | 
					        super(properties, builderProvider.getIfAvailable());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Bean
 | 
				
			||||||
 | 
					    @ConditionalOnProperty("influx.url")
 | 
				
			||||||
 | 
					    @ConditionalOnMissingBean(InfluxDBClient.class)
 | 
				
			||||||
 | 
					    public InfluxDBClient influxDBClient() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        InfluxDBClientOptions.Builder influxBuilder = makeBuilder();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return InfluxDBClientFactory.create(influxBuilder.build()).setLogLevel(properties.getLogLevel());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * The MIT License
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					 * in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					 * copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					 * furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice shall be included in
 | 
				
			||||||
 | 
					 * all copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
				
			||||||
 | 
					 * THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package com.cnbm.influx.influx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import okhttp3.OkHttpClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.function.Supplier;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Provide the {@link OkHttpClient.Builder OkHttpClient.Builder} to use to
 | 
				
			||||||
 | 
					 * customize the auto-configured {@link com.influxdb.client.InfluxDBClient} instance.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Jakub Bednar (bednar@github) (06/05/2019 13:11)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@FunctionalInterface
 | 
				
			||||||
 | 
					public interface InfluxDB2OkHttpClientBuilderProvider extends Supplier<OkHttpClient.Builder> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,178 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * The MIT License
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					 * in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					 * copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					 * furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice shall be included in
 | 
				
			||||||
 | 
					 * all copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
				
			||||||
 | 
					 * THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package com.cnbm.influx.influx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.cnbm.influx.constant.Constant;
 | 
				
			||||||
 | 
					import com.influxdb.LogLevel;
 | 
				
			||||||
 | 
					import org.springframework.boot.context.properties.ConfigurationProperties;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.time.Duration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Configuration properties for InfluxDB 2.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Jakub Bednar (bednar@github) (06/05/2019 12:54)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@ConfigurationProperties(prefix = "influx")
 | 
				
			||||||
 | 
					public class InfluxDB2Properties {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//    public InfluxDB2Properties{
 | 
				
			||||||
 | 
					//        this.bucket = Constant.bucket;
 | 
				
			||||||
 | 
					//        this.url = Constant.url;
 | 
				
			||||||
 | 
					//        this.org = Constant.org;
 | 
				
			||||||
 | 
					//        this.token = Constant.token;
 | 
				
			||||||
 | 
					//        this.username = Constant.username;
 | 
				
			||||||
 | 
					//        this.password = Constant.password;
 | 
				
			||||||
 | 
					//    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final int DEFAULT_TIMEOUT = 10_000;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * URL to connect to InfluxDB.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String url = Constant.url;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Username to use in the basic auth.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String username = Constant.username;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Password to use in the basic auth.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String password = Constant.password;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Token to use for the authorization.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String token = Constant.token;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Default destination organization for writes and queries.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String org = Constant.org;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Default destination bucket for writes.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String bucket = Constant.bucket;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The log level for logging the HTTP request and HTTP response.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private LogLevel logLevel = LogLevel.NONE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Read timeout for {@code OkHttpClient}.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private Duration readTimeout = Duration.ofMillis(DEFAULT_TIMEOUT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Write timeout for {@code OkHttpClient}.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private Duration writeTimeout = Duration.ofMillis(DEFAULT_TIMEOUT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Connection timeout for {@code OkHttpClient}.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private Duration connectTimeout = Duration.ofMillis(DEFAULT_TIMEOUT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getUrl() {
 | 
				
			||||||
 | 
					        return url;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUrl(final String url) {
 | 
				
			||||||
 | 
					        this.url = url;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getUsername() {
 | 
				
			||||||
 | 
					        return username;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUsername(final String username) {
 | 
				
			||||||
 | 
					        this.username = username;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getPassword() {
 | 
				
			||||||
 | 
					        return password;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setPassword(final String password) {
 | 
				
			||||||
 | 
					        this.password = password;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getToken() {
 | 
				
			||||||
 | 
					        return token;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setToken(final String token) {
 | 
				
			||||||
 | 
					        this.token = token;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public LogLevel getLogLevel() {
 | 
				
			||||||
 | 
					        return logLevel;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setLogLevel(final LogLevel logLevel) {
 | 
				
			||||||
 | 
					        this.logLevel = logLevel;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getOrg() {
 | 
				
			||||||
 | 
					        return org;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setOrg(final String org) {
 | 
				
			||||||
 | 
					        this.org = org;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getBucket() {
 | 
				
			||||||
 | 
					        return bucket;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setBucket(final String bucket) {
 | 
				
			||||||
 | 
					        this.bucket = bucket;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Duration getReadTimeout() {
 | 
				
			||||||
 | 
					        return readTimeout;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setReadTimeout(final Duration readTimeout) {
 | 
				
			||||||
 | 
					        this.readTimeout = readTimeout;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Duration getWriteTimeout() {
 | 
				
			||||||
 | 
					        return writeTimeout;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setWriteTimeout(final Duration writeTimeout) {
 | 
				
			||||||
 | 
					        this.writeTimeout = writeTimeout;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Duration getConnectTimeout() {
 | 
				
			||||||
 | 
					        return connectTimeout;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setConnectTimeout(final Duration connectTimeout) {
 | 
				
			||||||
 | 
					        this.connectTimeout = connectTimeout;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								ym-influx/src/main/java/com/cnbm/influx/param/BaseParam.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								ym-influx/src/main/java/com/cnbm/influx/param/BaseParam.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					package com.cnbm.influx.param;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.validation.constraints.NotEmpty;
 | 
				
			||||||
 | 
					import javax.validation.constraints.NotNull;
 | 
				
			||||||
 | 
					import java.io.Serializable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Desc: ""
 | 
				
			||||||
 | 
					 * @Author: caixiang
 | 
				
			||||||
 | 
					 * @DATE: 2022/6/29 10:18
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					public class BaseParam implements Serializable {
 | 
				
			||||||
 | 
					    //page 信息可选
 | 
				
			||||||
 | 
					    private PageInfo pageInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotEmpty(message = "measurement 不能为空")
 | 
				
			||||||
 | 
					    private String measurement;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull(message = "查询时间段不能为空")
 | 
				
			||||||
 | 
					    private Range range;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								ym-influx/src/main/java/com/cnbm/influx/param/PageInfo.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								ym-influx/src/main/java/com/cnbm/influx/param/PageInfo.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					package com.cnbm.influx.param;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import org.hibernate.validator.constraints.Range;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Desc: ""
 | 
				
			||||||
 | 
					 * @Author: caixiang
 | 
				
			||||||
 | 
					 * @DATE: 2022/6/29 10:19
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					public class PageInfo {
 | 
				
			||||||
 | 
					    @Range(min = 1, message = "页码必须大于等于1")
 | 
				
			||||||
 | 
					    private Integer current;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//    @NotNull(message = "每页显示条数不能为空")
 | 
				
			||||||
 | 
					    @Range(min = 1, max = 1000, message = "每页显示条数范围需在1-1000之间")
 | 
				
			||||||
 | 
					    private Integer size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public PageInfo(Integer current,Integer size){
 | 
				
			||||||
 | 
					        this.current = current;
 | 
				
			||||||
 | 
					        this.size = size;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					package com.cnbm.influx.param;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.EqualsAndHashCode;
 | 
				
			||||||
 | 
					import lombok.experimental.Accessors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Desc: "influx 查询条件构造"
 | 
				
			||||||
 | 
					 * @Author: caixiang
 | 
				
			||||||
 | 
					 * @DATE: 2022/6/29 10:17
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 注意:
 | 
				
			||||||
 | 
					 *  必填
 | 
				
			||||||
 | 
					 *      ① measurement 不能为空
 | 
				
			||||||
 | 
					 *      ② 时间段 不能为空
 | 
				
			||||||
 | 
					 *      ③ bucket 不能为空
 | 
				
			||||||
 | 
					 *  非必填
 | 
				
			||||||
 | 
					 *      ① 分页信息可选
 | 
				
			||||||
 | 
					 *      ② tag
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@EqualsAndHashCode(callSuper = false)
 | 
				
			||||||
 | 
					@Accessors(chain = true)
 | 
				
			||||||
 | 
					public class QueryDataParam extends BaseParam{
 | 
				
			||||||
 | 
					    private Tag tag;
 | 
				
			||||||
 | 
					    //查询的时候,需要忽略的字段。(transationId是唯一标识会对 最终的查询结果集产生影响)
 | 
				
			||||||
 | 
					    private String dropedTagName;
 | 
				
			||||||
 | 
					    private String bucket;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										30
									
								
								ym-influx/src/main/java/com/cnbm/influx/param/Range.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								ym-influx/src/main/java/com/cnbm/influx/param/Range.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					package com.cnbm.influx.param;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.validation.constraints.NotNull;
 | 
				
			||||||
 | 
					import java.time.Instant;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Desc: "influxdb查询 时间范围"
 | 
				
			||||||
 | 
					 * @Author: caixiang
 | 
				
			||||||
 | 
					 * @DATE: 2022/6/29 11:14
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					public class Range {
 | 
				
			||||||
 | 
					    @NotNull(message = "起始时间不能为空")
 | 
				
			||||||
 | 
					    private Instant begin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull(message = "终点时间不能为空")
 | 
				
			||||||
 | 
					    private Instant end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Range(Instant begin,Instant end){
 | 
				
			||||||
 | 
					        this.begin = begin;
 | 
				
			||||||
 | 
					        this.end = end;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//    public static void main(String[] args) {
 | 
				
			||||||
 | 
					//        Date date = new Date();
 | 
				
			||||||
 | 
					//        System.out.println(date.toInstant().toString());
 | 
				
			||||||
 | 
					//    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										19
									
								
								ym-influx/src/main/java/com/cnbm/influx/param/Tag.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								ym-influx/src/main/java/com/cnbm/influx/param/Tag.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					package com.cnbm.influx.param;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Desc: ""
 | 
				
			||||||
 | 
					 * @Author: caixiang
 | 
				
			||||||
 | 
					 * @DATE: 2022/6/29 14:38
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					public class Tag {
 | 
				
			||||||
 | 
					    private String tagName;
 | 
				
			||||||
 | 
					    private String tagValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Tag(String tagName,String tagValue){
 | 
				
			||||||
 | 
					        this.tagName = tagName;
 | 
				
			||||||
 | 
					        this.tagValue = tagValue;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								ym-influx/src/main/java/com/cnbm/influx/template/Event.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								ym-influx/src/main/java/com/cnbm/influx/template/Event.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					package com.cnbm.influx.template;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.influxdb.annotations.Column;
 | 
				
			||||||
 | 
					import com.influxdb.annotations.Measurement;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.validation.constraints.NotNull;
 | 
				
			||||||
 | 
					import java.time.Instant;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Desc: ""
 | 
				
			||||||
 | 
					 * @Author: caixiang
 | 
				
			||||||
 | 
					 * @DATE: 2022/6/25 11:13
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					public class Event {
 | 
				
			||||||
 | 
					    private Instant time;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String transationId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String argName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Double argValue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					package com.cnbm.influx.template;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.influxdb.annotations.Column;
 | 
				
			||||||
 | 
					import com.influxdb.annotations.Measurement;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.time.Instant;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Desc: ""
 | 
				
			||||||
 | 
					 * @Author: caixiang
 | 
				
			||||||
 | 
					 * @DATE: 2022/6/22 15:52
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					//Temperature.java
 | 
				
			||||||
 | 
					@Measurement(name = "temperature")
 | 
				
			||||||
 | 
					public class Temperature {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(tag = true)
 | 
				
			||||||
 | 
					    public String location;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column
 | 
				
			||||||
 | 
					    public Double value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column
 | 
				
			||||||
 | 
					    public String type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Column(timestamp = true)
 | 
				
			||||||
 | 
					    public Instant time;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										17
									
								
								ym-influx/src/main/resources/application-influx.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								ym-influx/src/main/resources/application-influx.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					influx:
 | 
				
			||||||
 | 
					  url: http://192.168.0.170:8086 # URL to connect to InfluxDB.
 | 
				
			||||||
 | 
					  username: caixiang # Username to use in the basic auth.
 | 
				
			||||||
 | 
					  password: 251128856 # Password to use in the basic auth.
 | 
				
			||||||
 | 
					  token: lkBsC27QZr1W50BSPlGxpTqNNpwuUk5uz1dZZRPSPbCG5VmNDDUo8P3UkZIhGWwfJwkuz6ZGZ7Et4_KBaG3gHw== # Token to use for the authorization.
 | 
				
			||||||
 | 
					  org: qgs # Default destination organization for writes and queries.
 | 
				
			||||||
 | 
					  bucket: qgs-bucket # Default destination bucket for writes.
 | 
				
			||||||
 | 
					  logLevel: BODY # The log level for logging the HTTP request and HTTP response. (Default: NONE)
 | 
				
			||||||
 | 
					  readTimeout: 5s # Read timeout for OkHttpClient. (Default: 10s)
 | 
				
			||||||
 | 
					  writeTimeout: 5s # Write timeout for OkHttpClient. (Default: 10s)
 | 
				
			||||||
 | 
					  connectTimeout: 5s # Connection timeout for OkHttpClient. (Default: 10s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # management.health.influx.enabled=true # Whether to enable InfluxDB 2.x health check.
 | 
				
			||||||
 | 
					management:
 | 
				
			||||||
 | 
					  health:
 | 
				
			||||||
 | 
					    influxdb:
 | 
				
			||||||
 | 
					      enabled: true
 | 
				
			||||||
		Reference in New Issue
	
	Block a user