Spring boot 整合influxdb2

news2025/3/10 14:46:43

一.服务安装

docker search influxdb
docker pull influxdb
docker run -dit --name influxdb --restart always -p 8086:8086 -v /dp/docker/file/influxdb:/var/lib/influxdb influxdb 

访问8086

初始化 账号组织和新建bucket 创建密钥 这些豆记录下来

二.项目配置

引入依赖

     <dependency>
            <groupId>com.influxdb</groupId>
            <artifactId>influxdb-spring</artifactId>
            <version>7.1.0</version>
     </dependency>

yml 配置

influx:
  url: http://localhost:8086/
  username: influxdb
  password: xjaq1234
  token: wOzhZxDpKrH0lyNcCCy3tG3U582ie_mrgk_UGu4Eb2UgzrhhVN0O0xyvifloxjaKzHiENIbQO7IlaxreIXnYDA==
  org: xj
  bucket: newPower
  logLevel: BODY
  readTimeout: 5s
  writeTimeout: 5s
  connectTimeout: 5s

management:
  influx:
    metrics:
      export:
        api-version: v2
        enabled: true
        step: 10s
        uri: http://localhost:8086
        auto-create-db: true
        user-name: influxdb
        password: xjaq1234
        org: xj
        bucket: newPower
        token: wOzhZxDpKrH0lyNcCCy3tG3U582ie_mrgk_UGu4Eb2UgzrhhVN0O0xyvifloxjaKzHiENIbQO7IlaxreIXnYDA==

influx 是配置influx 配置健康检测数据会不端上传到influxdb(不配置会一直报错  因为依赖中自动帮你引入了,要么手动把他排除掉

       <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-influx</artifactId>
            <version>${micrometer.version}</version>
        </dependency>

代码书写

package com.chenkang.demo.controller;

import com.chenkang.demo.entity.DeviceInfo;
import com.influxdb.client.InfluxDBClient;
import com.influxdb.client.InfluxQLQueryApi;
import com.influxdb.client.WriteApiBlocking;
import com.influxdb.client.domain.InfluxQLQuery;
import com.influxdb.client.domain.WritePrecision;
import com.influxdb.query.InfluxQLQueryResult;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.IntStream;

/**
 * @author chenkang
 * @since 2024/7/13 9:33
 */
@AllArgsConstructor
@RestController
@RequestMapping("influxdb")
public class InfluxdbController {

    private final InfluxDBClient influxDBClient;

    /**
     * 写入数据
     */
    @GetMapping("writeData")
    public void test() {
        WriteApiBlocking writeApiBlocking = influxDBClient.getWriteApiBlocking();
        IntStream.range(0, 100).forEach(i -> {
            DeviceInfo deviceInfo = new DeviceInfo();
            deviceInfo.setKey("wendu");
            deviceInfo.setValue(ThreadLocalRandom.current().nextDouble());
            //The format or precision of time series timestamps.
            writeApiBlocking.writeMeasurement(WritePrecision.NS, deviceInfo);
        });
    }


    /**
     * 写入数据
     */
    @GetMapping("queryData")
    public void queryData() {
        InfluxQLQueryApi influxQLQueryApi = influxDBClient.getInfluxQLQueryApi();
        String query = "SELECT * from deviceInfo";
        InfluxQLQueryResult qlQueryResult = influxQLQueryApi.query(new InfluxQLQuery(query, "newPower").setPrecision(InfluxQLQuery.InfluxQLPrecision.SECONDS));
        List<InfluxQLQueryResult.Result> results = qlQueryResult.getResults();
        for (InfluxQLQueryResult.Result r : results) {
            for (InfluxQLQueryResult.Series series : r.getSeries()) {
                List<InfluxQLQueryResult.Series.Record> values1 = series.getValues();
                Map<String, Integer> columns1 = series.getColumns();
                System.out.println(values1);
                System.out.println(columns1);
            }
        }
    }
}
mport java.time.Instant;

/**
 * @author chenkang
 * @since 2024/7/13 10:04
 */
@Data
@Measurement(name = "deviceInfo")
public class DeviceInfo {

    @Column(timestamp = true)
    Instant time;

    /**
     * tag 类似索引 要求不能超过10万
     */
    @Column(tag = true, name = "id")
    private String deviceId;

    @Column(tag = true, name = "key")
    private String key;

    @Column(name = "value")
    private double value;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1969145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是物流锁控,RFID物流智能锁对于物流锁控有什么意义

在当今竞争激烈的全球商业环境中&#xff0c;物流行业作为经济发展的重要支撑&#xff0c;其高效、安全的运作至关重要。物流锁控作为保障物流运输过程中货物安全、准确和及时交付的关键环节&#xff0c;正面临着日益复杂的挑战。 一、物流锁控的定义与范畴 物流锁控&#xf…

JavaScript学习笔记(十一):JS Browser BOM

1、JavaScript Window - 浏览器对象模型 浏览器对象模型&#xff08;Browser Object Model (BOM)&#xff09;允许 JavaScript 与浏览器对话。 1.1 浏览器对象模型&#xff08;Browser Object Model (BOM)&#xff09; 不存在浏览器对象模型&#xff08;BOM&#xff09;的官方…

【周易哲学】生辰八字入门讲解(一)

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文讲解【周易哲学】生辰八字入门讲解&#xff0c;期待与你一同探索、学习、进步&#xff0c;一起卷起来叭&#xff01; 目录 生辰八字阴阳五行天干地支天干天干天干五合天干…

怎么恢复电脑删除的数据?4种有效的数据恢复方法

在数字时代&#xff0c;数据已成为我们生活与工作的核心要素&#xff0c;它不仅存储着我们工作中的各种重要资料&#xff0c;也记录着个人生活的点点滴滴。无论是精心准备的工作文档或者珍藏的重点照片&#xff0c;在不经意间被误删、因设备故障、中病毒等原因导致丢失&#xf…

AI砸掉了这些人的饭碗

在一般打工人眼里&#xff0c;金融圈往往被认为是高端脑力工作者的聚集地&#xff0c;他们工资高&#xff0c;学历高&#xff0c;能力强&#xff0c;轻易无法被替代。 可最近&#xff0c;偏偏一个“非人类”的物种&#xff0c;要来抢他们的饭碗。相关报道称&#xff0c;华尔街…

因为不懂Redis集群,我被diss了

点赞再看&#xff0c;Java进阶一大半 Redis官方在官网里写着霸气的宣传语&#xff1a;从构建者那里获取世界上最快的内存数据库Get the world’s fastest in-memory database from the ones who built it。南哥相信国内没用Redis的科技公司也屈指可数。 现在Redis已经走向了商业…

C++学习:C++是如何运行的

C 是一种强类型的编程语言&#xff0c;支持面向对象、泛型和低级内存操作。它的工作机制包括从编写源代码到生成可执行文件的一系列步骤。C与文件无关&#xff0c;文件只是容纳运行内容的载体&#xff0c;需要对文件以目标系统的规则编译后&#xff0c;才能在目标系统中运行。 …

红酒与情感:品味中的情感共鸣

在生活的细微之处&#xff0c;情感如涓涓细流&#xff0c;无声无息却又深深地影响着我们。而红酒&#xff0c;这瓶中的液体&#xff0c;仿佛是情感的载体&#xff0c;让我们在品味中感受那些难以言说的情愫。当定制红酒洒派红酒&#xff08;Bold & Generous&#xff09;与情…

有什么快速进行同声传译的软件?6个软件帮助你快速进行同声传译

有什么快速进行同声传译的软件&#xff1f;6个软件帮助你快速进行同声传译 同声传译是将一种语言的讲话即时翻译成另一种语言的过程&#xff0c;对于跨语言沟通非常重要。以下是六款可以帮助你快速进行同声传译的软件&#xff0c;每款软件都有其独特的功能和优势。 语音翻译…

智能计算模拟: DFT+MD+ML 深度融合及科研实践应用

智能计算模拟&#xff1a; DFTMDML 深度融合及科研实践应用 第一 部分 DFTMDML基础 1. 理论内容&#xff1a; 理论内容&#xff1a; 1.1. 计算模拟发展&#xff1a;MD, MC, DFT三大部分 1.2. 人工智能时代背景&#xff1a; 大数据与大模型对模拟计算的影响 1.3. 人工智能…

【免费】如何考取HarmonyOS应用开发者基础认证和高级认证(详细教程)

HarmonyOS应用开发者认证考试PC网址 基础&#xff1a;华为开发者学堂 高级&#xff1a;华为开发者学堂 注&#xff1a;免费认证&#xff0c;其中基础认证有免费的课程&#xff0c;浏览器用Edge。 文章目录 目录 HarmonyOS应用开发者认证考试PC网址 前言 一、备考流程 1、注册…

【题解】【数学】—— [CSP-J 2023] 小苹果

【题解】【数学】—— [CSP-J 2023] 小苹果 [CSP-J 2023] 小苹果题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 1.题意分析2.代码 [CSP-J 2023] 小苹果 前置知识&#xff1a;数学分组思想&#xff0c;整体思想。 [CSP-J 2023] 小苹果 题目描述 小 Y 的桌子上…

家庭出游新宠儿!格瑞维亚改装大赛给出行带来无限可能

近期&#xff0c;格瑞维亚改装共创大赛的盛大开启&#xff0c;推动着改装领域前进的步伐。这场盛宴汇聚了400余份创意火花&#xff0c;每一款改装格瑞维亚都是对“家”的重新诠释&#xff0c;它们不仅仅是车轮上的风景&#xff0c;更是梦想与生活的完美融合。 大赛中&#xff0…

Day15--Servlet后端之Jsp了解学习(数据展示分页的实现)

JSP&#xff08;Java Server Pages&#xff09;是一种基于Java的动态网页开发技术&#xff0c;主要用于创建能够动态生成内容的Web应用程序。他可以前后端语言混合编写&#xff0c;用在编译后会变成一个类&#xff0c;你也可以理解为jsp文件就是一个servlet类&#xff0c;只是j…

2024第18届中国西部体育博览会诚邀代理招展

2024第18届中国西部体育博览会诚邀代理招展 2024第18届中国西部体育博览会诚邀全国各关联商会、协会&#xff0c;联盟、各专业会展公司、各关联产业园区、各关联网站报纸杂志及平台等资源方组团参展&#xff0c;组委会将给予最优惠的代理招展政策&#xff0c;群策群力共同把中…

pycharm无法导入pyside2模块;“ModuleNotFoundError: No module named ‘PySide2“

参考博客&#xff1a; 1&#xff09;pycharm中配置pyqt designer和pyside2【功能是在pycharm中可以打开designer,并且可以把.ui文件转换为.py文件】 https://blog.csdn.net/kuntliu/article/details/117219237 2&#xff09;.ui转化为.py后&#xff0c;点击运行&#xff0c;报错…

C++为何难以割舍历史包袱?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c&#xff0b;&#xff0b;的资料从专业入门到高级教程」&#xff0c;点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 你以为…