一.源码拉取
当前时间:2025年06月18日12点02分
后台接口服务:https://gitee.com/pnoker/iot-dc3.git
前端:https://gitee.com/pnoker/iot-dc3-web.git
请自行拉取至本地。
二.本地环境准备
其他基础环境先不讲了,如有需要请留言。
idea + VS Code。
IntelliJ IDEA 2024.2.0.1 (Ultimate Edition)
JDK:java 21 的一个版本 graalvm-21 GraalVM 21.0.5 - VM 23.1.5
Maven:apache-maven-3.9.9
Visual Studio Code Version: 1.101.0 (user setup)
NodeJS:v20.16.0
后台接口配置中默认是dev环境,安装完本地环境后请注意修改配置文件中 MySQL 端口号、账号、密码;Redis 端口号、密码;MongoDB 端口号;mqtt 端口号 等。
嫌每次开机都要启动一遍服务麻烦的,可以看看如何将其发布到系统服务中,然后设置自启动。
1.Hosts配置
2.MySQL 5.7.44
各系统数据库脚本下载见 https://download.csdn.net/download/qq_35139974/91056873
如果你没有下载的积分可以直接联系我。
3.Redis 3.0.504
4.MongoDB 8.0.10
设置用户名和密码见 mongoDB设置访问用户名密码
use dc3
db.createUser({ user: "dc3", pwd: "dc3", roles: [{ role: "dbAdmin", db: "dc3" }] })
5.RabbitMQ 4.1.1
启用 MQTT 插件:
# 启用 MQTT 插件
rabbitmq-plugins enable rabbitmq_mqtt
# 查看已启用插件列表
rabbitmq-plugins list
检查并创建虚拟主机,然后赋予权限:
# 列出所有虚拟主机
rabbitmqctl list_vhosts
# 如果不存在 dc3,则创建它
rabbitmqctl add_vhost dc3
# 列出所有用户
rabbitmqctl list_users
# 给用户分配 dc3 虚拟主机的权限
# 格式:rabbitmqctl set_permissions -p <vhost> <user> ".*" ".*" ".*"
rabbitmqctl set_permissions -p dc3 dc3 ".*" ".*" ".*"
三.后台项目启动
依次启动 GatewayApplication、AuthApplication、ManagerApplication、DataApplication、VirtualDriverApplication。
如果控制台报错了,请检查 二 中配置是否正确,相关环境或插件是否已安装完毕。
1.没有安装 mqtt 插件
Exception while connecting org.eclipse.paho.client.mqttv3.MqttException: 无法连接至服务器 at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:80) at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:724) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: java.net.ConnectException: Connection refused: getsockopt at java.base/sun.nio.ch.Net.pollConnect(Native Method) at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682) at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592) at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) at java.base/java.net.Socket.connect(Socket.java:751) at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:74) ... 2 common frames omitted
2.虚拟主机问题
2025-06-18 11:49:45.490 ERROR 25604 --- [ntContainer#2-1] [1932] o.s.a.r.l.SimpleMessageListenerContainer : Failed to check/redeclare auto-delete queue(s). org.springframework.amqp.AmqpIOException: java.io.IOException at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:70) at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:622) at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:726) at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.createConnection(ConnectionFactoryUtils.java:257) at org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:2249) at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:2222) at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:2202) at org.springframework.amqp.rabbit.core.RabbitAdmin.getQueueInfo(RabbitAdmin.java:467) at org.springframework.amqp.rabbit.core.RabbitAdmin.getQueueProperties(RabbitAdmin.java:451) at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.attemptDeclarations(AbstractMessageListenerContainer.java:1960) at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.redeclareElementsIfNecessary(AbstractMessageListenerContainer.java:1924) at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.initialize(SimpleMessageListenerContainer.java:1478) at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1320) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: java.io.IOException: null at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:140) at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:136) at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:158) at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:454) at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1251) at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1198) at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.connectAddresses(AbstractConnectionFactory.java:668) at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.connect(AbstractConnectionFactory.java:637) at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:584) ... 12 common frames omitted Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method: #method<connection.close>(reply-code=530, reply-text=NOT_ALLOWED - vhost dc3 not found, class-id=10, method-id=40) at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66) at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36) at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:552) at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:316) at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:152) ... 18 common frames omitted
3.redis没设置密码问题
需要在配置文件中将密码删除
Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to dc3-redis/<unresolved>:6379 at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:350) at io.lettuce.core.RedisClient.connect(RedisClient.java:215) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:112) at java.base/java.util.Optional.orElseGet(Optional.java:364) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:112) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1776) ... 38 common frames omitted Caused by: io.lettuce.core.RedisCommandExecutionException: ERR Client sent AUTH, but no password is set
4.当前 MongoDB 用户没有在 dc3
数据库上执行聚合查询 (aggregate
) 的权限
异常如下:
org.springframework.data.mongodb.UncategorizedMongoDbException: Command failed with error 13 (Unauthorized): 'not authorized on dc3 to execute command { aggregate: "point_value", pipeline: [ { $match: {}