当前位置: 首页 > article >正文

SpringBoot连接测试InfluxDB时序数据库

1)创建一个Springboot项目,在pom.xml引入influxDB相关的包

<!-- influxdb -->
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib</artifactId>
            <version>1.8.10</version> <!-- 可以使用最新的稳定版本 -->
        </dependency>
        <dependency>
            <groupId>org.influxdb</groupId>
            <artifactId>influxdb-java</artifactId>
            <version>2.22</version> <!-- 确保使用支持的版本 -->
        </dependency>
        <dependency>
            <groupId>com.influxdb</groupId>
            <artifactId>influxdb-client-java</artifactId>
            <version>6.6.0</version>
        </dependency>

2)application.yml添加配置信息

influxdb:
  url: http://127.0.0.1:8017
  username: root
  password: wz1123456
  token: vHqPBS1IPKo6ydzh-c5mqXnJn0h1HgHhbeD5M94BTRC0V49422iPyq3c6Vj9MYmamk3EjcivbtkqvwYPqigY3Q==
  bucket: wzadministrator
  org: wz_influxdb

3)新建InfluxDBConfig.java文件

@Configuration
public class InfluxDBConfig {
        @Value("${influxdb.url}")
        private String url;

        @Value("${influxdb.token}")
        private String token;

        @Value("${influxdb.org}") // 组织名称
        private String org;

        @Value("${influxdb.bucket}") // 存储桶名称
        private String bucket;

        @Bean
        public InfluxDBClient influxDBClient() {
            return InfluxDBClientFactory.create(url, token.toCharArray(), org, bucket);
        }
}

4)自动化测试InfluxDBDataReader.java,以插入数据为例,DevPointFiveSeDayShard类为实体类,自定义


@Component
public class InfluxDBDataReader {
    String realTimePre = "REA:";
    String recentTimePre = "REC:";
    @Autowired
    private MongoTemplate mongoTemplate;
    @Autowired
    private JedisPool jedisPool;
    private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    private static final DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy_MM_dd_HH_mm_ss");
    // 在你的类中添加 ObjectMapper 的实例
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private DevPointForMongoDBService devPointForMongoDBService;
    @Autowired
    private InfluxDBClient influxDBClient;

    @Value("${influxdb.bucket}")
    private String bucket;

    @Value("${influxdb.org}")
    private String org;
    /**
     * 定时任务启动,每隔5s,统一在AllAutoReader类中启动
     */
//    @EventListener(ApplicationReadyEvent.class)
//    @Scheduled(fixedRate = 5000)
//    @PostConstruct
    public void runInfluxDB() {
        insertDevToInfluxDB();
    }


public void insertDevToInfluxDB(){
        try{
            List<DevPointFiveSeDayShard> devPointFiveList = RandomlyGeneratEntityCongfig.GenerateEntity(30000);
            List<Point> points = new ArrayList<>();
            WriteApiBlocking writeApi = influxDBClient.getWriteApiBlocking();
            for (DevPointFiveSeDayShard data : devPointFiveList) {
                // 创建一个 Point 对象
                Point point = Point.measurement("devPoint2") // measurement 名称
                        .addTag("productId", data.getProductId()) // tag
                        .addField("variableId", data.getVariableId()) // Field
                        .addField("calcValue", data.getCalcValue()) // field
                        .addField("errType", data.getErrType()) // field
                        .time(data.getReportDateTime(), WritePrecision.MS); // 设置时间戳,单位为纳秒
                points.add(point);
            }
            // 插入数据
            System.out.println("Writing points to bucket: " + bucket);
            long startTime = System.currentTimeMillis();
            writeApi.writePoints(points);
            long endTime = System.currentTimeMillis();
            System.out.println(LocalDateTime.now().format(formatter) + "存储InfluxDB数据耗时:" + (endTime - startTime) + "ms" + "存储量:" + devPointFiveList.size());
            System.out.println("points插入完成==");
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

其他操作见官网文档:InfluxDB OSS v2 Documentation


http://www.kler.cn/a/415146.html

相关文章:

  • C++中的volatile关键字
  • Zero to JupyterHub with Kubernetes中篇 - Kubernetes 常规使用记录
  • JAVA实现上传附件到服务器
  • MySQL 中的排序:索引排序与文件排序
  • 苹果系统中利用活动监视器来终止进程
  • React-useState的使用
  • 学习ASP.NET Core的身份认证(基于Session的身份认证1)
  • 使用命令行创建一个简单的 Maven Web 应用程序
  • MindAgent部署(进行中.....)
  • 23种设计模式-工厂方法(Factory Method)设计模式
  • sqli_labs-10,11,12 --详细解析
  • 叮!您的RK3568系统镜像备份方法请查收
  • 可视化建模以及UML期末复习篇----相关软件安装
  • web博客系统的自动化测试
  • MEASURING INTANGIBLE CAPITAL WITH MARKET PRICES论文阅读
  • MySQL面试攻略:从基础到高级,全面解析
  • 【微服务】Nacos配置管理
  • docker-mysql
  • 分布式光伏与储能协调控制策略的应用分析
  • 简单线性DP
  • 通过docker overlay2 目录名查找容器名和容器ID
  • 架构第十一章:zabbix
  • Vue 3 KeepAlive 教程
  • Unity3d C# 实现一个基于UGUI的自适应尺寸图片查看器(含源码)
  • 【CSS】设置文本超出N行省略
  • 第六篇:其他窗口部件 QLineEdit