springboot多数据源
docker安装tdengine
注意版本,当前安装的是2.X版本
# 查看当前tdengine服务端版本
docker history 镜像名称
项目中的依赖版本要同步,版本接近即可,大版本需一致
<!--涛思时序数据库驱动-->
<dependency>
<groupId>com.taosdata.jdbc</groupId>
<artifactId>taos-jdbcdriver</artifactId>
<version>2.0.36</version>
</dependency>
docker执行
# 拉取镜像
docker pull tdengine/tdengine:2.6.0.34
# 运行容器
docker run -d --name tdengine --restart=always -v /home/soft/taos:/usr/local/taos/data -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime -p 6030:6030 -p 6035:6035 -p 6041:6041 -p 6030-6040:6030-6040/udp tdengine/tdengine:2.6.0.34
# 进入容器
docker exec -it tdengine bash
# 进入tdengine命令窗口
taos
# 创建数据库
create database ffc_device_data;
# 展示超级表
show stables;
# 展示子表
show tables;
# 创建流量信号超级表
create stable flowsignal (ts timestamp, upflow bigint, downflow bigint, totalflow bigint, signal int) tags(deviceId bigint, tenantId bigint);
# 创建子表(不需要执行,新建设备自动建表)
create table flowsignal_1659144381446234113 using flowsignal (deviceid,tenantid) tags (1659144381446234113,222222221234567895);
创建子表可能失败
进入taos数据库:
# 查看节点
show dnodes;
发现就一个节点还是 offline
进入容器看看日志
/usr/local/taos
查看 taosadapter_日期.log
# 发现这么一段,那我们重新启动容器,把这个6044端口也开一下
12/02 15:44:45.376652 00000043 TAOS_ADAPTER info "UDP listening on "[::]:6044"" model=statsd
12/02 15:44:45.376684 00000043 TAOS_ADAPTER info "Started the statsd service on ":6044"" model=statsd
重新运行容器
docker run -d --name tdengine --restart=always -v /home/docker/tdengine/taos:/usr/local/taos/data -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime -p 6030:6030 -p 6035:6035 -p 6041:6041 -p 6030-6040:6030-6040/udp -p 6044:6044/udp tdengine/tdengine:2.6.0.34
再去建表子表就OK了;
pom
<!--多数据源框架-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
<!--涛思时序数据库驱动-->
<dependency>
<groupId>com.taosdata.jdbc</groupId>
<artifactId>taos-jdbcdriver</artifactId>
<!-- 驱动版本同步tdengine服务,服务器为2.6 -->
<version>2.0.38</version>
</dependency>
多数据源配置
spring:
datasource:
dynamic:
primary: mysql
datasource:
mysql:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://****/databaseXXXX?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true
username: root
password:
flow:
driver-class-name: com.taosdata.jdbc.rs.RestfulDriver
url: jdbc:TAOS-RS://****/databaseXXXX?characterEncoding=utf-8&useSSL=false
username: root
password: taosdata
对应service上注解数据源
# 默认的MySQL不用注解,需要切换副数据源的添加注解,在service实现上添加即可
@Service
@DS("flow")