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

Java集成InfluxDB

1. 添加InfluxDB依赖

首先,在项目中添加InfluxDB的Java客户端依赖。如果使用Maven,可以在pom.xml中添加以下依赖:

<dependency>
    <groupId>com.influxdb</groupId>
    <artifactId>influxdb-client-java</artifactId>
    <version>6.3.0</version>
</dependency>

2. 创建InfluxDB客户端

接下来,创建InfluxDB客户端实例,用于连接InfluxDB服务器。

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;

public class InfluxDBExample {
    public static void main(String[] args) {
        // InfluxDB连接信息
        String url = "http://localhost:8086"; // InfluxDB服务器地址
        String token = "your-token"; // 认证令牌
        String org = "your-org"; // 组织名称
        String bucket = "your-bucket"; // 存储桶名称

        // 创建InfluxDB客户端
        InfluxDBClient influxDBClient = InfluxDBClientFactory.create(url, token.toCharArray(), org, bucket);

        // 写入数据
        writeData(influxDBClient);

        // 关闭客户端
        influxDBClient.close();
    }

    private static void writeData(InfluxDBClient influxDBClient) {
        // 创建WriteApi实例
        try (WriteApi writeApi = influxDBClient.getWriteApi()) {
            // 创建一个数据点(Point)
            Point point = Point.measurement("hardware_metrics")
                    .addTag("device_id", "device_123") // 设备ID
                    .addField("temperature", 25.3) // 温度
                    .addField("humidity", 60.1) // 湿度
                    .time(System.currentTimeMillis(), WritePrecision.MS); // 时间戳

            // 写入数据点
            writeApi.writePoint(point);

            System.out.println("Data written to InfluxDB successfully.");
        }
    }
}

3. 配置InfluxDB

确保InfluxDB服务器已启动,并创建了相应的组织(Organization)和存储桶(Bucket)。可以通过InfluxDB的Web界面或命令行工具进行配置。

4. 运行程序

运行Java程序,数据将被写入InfluxDB。可以通过InfluxDB的Web界面或查询API验证数据是否成功写入。

5. 查询数据(可选)

如果需要从InfluxDB中查询数据,可以使用以下代码:

import com.influxdb.client.InfluxDBClient;
import com.influxdb.client.InfluxDBClientFactory;
import com.influxdb.client.QueryApi;
import com.influxdb.query.FluxRecord;
import com.influxdb.query.FluxTable;

public class InfluxDBQueryExample {
    public static void main(String[] args) {
        // InfluxDB连接信息
        String url = "http://localhost:8086"; // InfluxDB服务器地址
        String token = "your-token"; // 认证令牌
        String org = "your-org"; // 组织名称

        // 创建InfluxDB客户端
        InfluxDBClient influxDBClient = InfluxDBClientFactory.create(url, token.toCharArray(), org, null);

        // 查询数据
        queryData(influxDBClient);

        // 关闭客户端
        influxDBClient.close();
    }

    private static void queryData(InfluxDBClient influxDBClient) {
        // 创建QueryApi实例
        QueryApi queryApi = influxDBClient.getQueryApi();

        // 定义Flux查询语句
        String fluxQuery = "from(bucket: \"your-bucket\") " +
                "|> range(start: -1h) " +
                "|> filter(fn: (r) => r._measurement == \"hardware_metrics\")";

        // 执行查询
        List<FluxTable> tables = queryApi.query(fluxQuery);

        // 处理查询结果
        for (FluxTable table : tables) {
            for (FluxRecord record : table.getRecords()) {
                System.out.println(record.getTime() + ": " + record.getValueByKey("_value"));
            }
        }
    }
}

总结

通过InfluxDB的Java客户端,可以轻松地将硬件设备发出的数据存储到时序数据库中。主要步骤包括创建客户端、写入数据点和查询数据。InfluxDB的高效存储和查询能力使其非常适合处理物联网设备的实时数据。

相关文章:

  • linux 内网下载 yum 依赖问题
  • 【数据库系统概论】第七章 数据库设计
  • 王道操作系统笔记第四章-文件管理(非常完整!包学包会!融入笔者自己的思考!)
  • Vue3实战学习(IDEA中打开、启动与搭建Vue3工程极简脚手架教程(2025超详细教程)、Windows系统命令行启动Vue3工程)(2)
  • 整理一下高级设施农业栽培学这门课程的所有知识点
  • 清华同方超翔Z860装win10系统教程(兆芯KX-7000处理器装win10)
  • 高品质汉化解锁!
  • 中性点直接接地电网接地故障Simulink仿真
  • 如果布隆过滤器挂了,里边存的数据全丢失了,怎么恢复呢?
  • HTML5 表单属性
  • 字符串习题
  • 【Deepseek应用】调用 Zotero 阅读和分析文献(下)
  • SQL Server 与 MySQL 的库同步工具推荐
  • 前端充电 - 移动端 - 小程序登录、跳转/嵌入H5页面
  • MyBatis多表查询实现方式
  • 【技术白皮书】内功心法 | 第一部分 | IP协议的目的与工作原理(IP地址)
  • Linux 生成静态库
  • yarn install时报错certificate has expired
  • TON基金会确认冠名赞助2025香港Web3嘉年华,并将于4月8日重磅呈现“TON生态日”
  • Flow Matching 和 Rectified Flow的区别
  • 怎么做自己的网站?/搜索引擎大全入口
  • 漳州网站建设 林/能打开各种网站的浏览器下载
  • wordpress bootstrap 主题/seo学习
  • 网站开发结构图/宁波网站推广方式怎么样
  • 电商网站建设规划/百度竞价软件哪个好
  • 乐平市网站建设/免费b站在线观看人数在哪儿