一.源碼拉取
當前時間: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配置
見 環境準備 | IoT DC3
2.MySQL 5.7.44
安裝見 MySQL綠色版Windows環境安裝
各系統數據庫腳本下載見 https://download.csdn.net/download/qq_35139974/91056873
如果你沒有下載的積分可以直接聯系我。
3.Redis 3.0.504
安裝見 Windows安裝Redis圖文教程
4.MongoDB 8.0.10
安裝見 Windows安裝MongoDB_mongodb
設置用戶名和密碼見 mongoDB設置訪問用戶名密碼
use dc3
db.createUser({ user: "dc3", pwd: "dc3", roles: [{ role: "dbAdmin", db: "dc3" }] })
5.RabbitMQ 4.1.1
安裝見 Windows下安裝rabbitmq
啟用 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: {}