diff --git a/iot-gateway/src/main/resources/bootstrap-dev.yml b/iot-gateway/src/main/resources/bootstrap-dev.yml
index 415f73a..9f85ffa 100644
--- a/iot-gateway/src/main/resources/bootstrap-dev.yml
+++ b/iot-gateway/src/main/resources/bootstrap-dev.yml
@@ -75,6 +75,7 @@ security:
- /iot-websocket/websocket/customer
- /iot-websocket/websocket/tts/token
- /iot-websocket/websocket/init/sysTalkAnswer
+ - /iot-websocket/websocket/device/init
#application:
# cors:
# allowed-crigin-patterns:
diff --git a/iot-gateway/src/main/resources/bootstrap.yml b/iot-gateway/src/main/resources/bootstrap.yml
index ec17f21..e0b0a0e 100644
--- a/iot-gateway/src/main/resources/bootstrap.yml
+++ b/iot-gateway/src/main/resources/bootstrap.yml
@@ -1,5 +1,5 @@
server:
- port: 8080
+ port: 8081
spring:
application:
name: qiuguo-iot-gateway
diff --git a/iot-modules/iot-box-user-api/pom.xml b/iot-modules/iot-box-user-api/pom.xml
index f970f07..51ae33a 100644
--- a/iot-modules/iot-box-user-api/pom.xml
+++ b/iot-modules/iot-box-user-api/pom.xml
@@ -70,18 +70,8 @@
reactor-test
test
-
- org.apache.skywalking
- apm-toolkit-logback-1.x
-
-
- ch.qos.logback
- logback-classic
-
-
- 8.15.0
-
-
+
+
cn.hutool
@@ -90,6 +80,13 @@
+
+ org.apache.skywalking
+ apm-toolkit-logback-1.x
+
+ 9.0.0
+
+
org.apache.skywalking
apm-toolkit-trace
@@ -102,6 +99,8 @@
9.0.0
+
+
${project.artifactId}
diff --git a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/device/DeviceController.java b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/device/DeviceController.java
index 4ecacfb..746e58f 100644
--- a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/device/DeviceController.java
+++ b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/device/DeviceController.java
@@ -1,10 +1,12 @@
package com.qiuguo.iot.user.api.controller.device;
+import cn.hutool.crypto.digest.MD5;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.qiuguo.iot.base.constans.Log4Constans;
import com.qiuguo.iot.base.constans.RedisConstans;
import com.qiuguo.iot.base.enums.*;
+import com.qiuguo.iot.base.utils.DateTimeUtils;
import com.qiuguo.iot.base.utils.StringUtils;
import com.qiuguo.iot.data.domain.BaseMessageResp;
import com.qiuguo.iot.data.domain.BaseSession;
@@ -12,12 +14,15 @@ import com.qiuguo.iot.data.domain.IActionSendMessage;
import com.qiuguo.iot.data.domain.action.Action;
import com.qiuguo.iot.data.domain.box.BoxSession;
import com.qiuguo.iot.data.domain.user.UserSession;
+import com.qiuguo.iot.data.entity.device.DeviceInfoEntity;
import com.qiuguo.iot.data.entity.device.DeviceUserBindEntity;
import com.qiuguo.iot.data.entity.device.DeviceUserTalkRecordEntity;
import com.qiuguo.iot.data.model.system.SystemTalkAnswerConfig;
+import com.qiuguo.iot.data.request.device.DeviceInfoRequest;
import com.qiuguo.iot.data.request.device.DeviceUserBindRequest;
import com.qiuguo.iot.data.request.device.DeviceUserTalkRecordRequest;
import com.qiuguo.iot.data.request.qiuguo.cloud.UserTalkRequst;
+import com.qiuguo.iot.data.resp.device.DeviceInitResp;
import com.qiuguo.iot.data.resp.device.DeviceTalkRecordResp;
import com.qiuguo.iot.data.resp.device.DeviceUserBindResp;
import com.qiuguo.iot.data.service.device.DeviceBatchService;
@@ -42,12 +47,14 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
+import org.springframework.data.redis.core.ReactiveValueOperations;
import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Mono;
import lombok.extern.slf4j.Slf4j;
import org.hswebframework.web.api.crud.entity.PagerResult;
import javax.annotation.Resource;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@@ -77,6 +84,92 @@ public class DeviceController {
@Resource
private SystemTalkAnswerConfigService systemTalkAnswerConfigService;
+ @Value("${device.key}")
+ private String key;
+ @Value("${device.checkTimeout}")
+ private Boolean checkTimeout;
+ @Autowired
+ private DeviceInfoService deviceInfoService;
+
+
+ @Resource
+ private ReactiveStringRedisTemplate reactiveStringRedisTemplate;
+
+ @Value("${device.timeout}")
+ private Long timeOut;//2分钟
+ @GetMapping("/init")
+ public Mono deviceInit(@RequestParam String wifiMac, @RequestParam String btMac,
+ @RequestParam Integer type, @RequestParam Long time,
+ @RequestParam String signature){
+ //deviceInfoService.
+ Long now = System.currentTimeMillis();
+ if(checkTimeout && now - time > timeOut){
+ //超时
+ log.info("请求过期");
+ BusinessException ex = new BusinessException("请求已失效");
+ return Mono.error(ex);
+ }
+ //设备类型是否匹配暂时不做限制
+ DeviceTypeEnum entryTypeEnum = DeviceTypeEnum.getEnumWithCode(type);
+ if(entryTypeEnum == null){
+ log.info("不支持的设备类型");
+ BusinessException ex = new BusinessException("不支持的设备类型");
+ return Mono.error(ex);
+ }
+ //验签
+ String wifiMd5 = MD5.create().digestHex(wifiMac).toUpperCase();
+ String btMd5 = MD5.create().digestHex(btMac).toUpperCase();
+ String typeMd5 = MD5.create().digestHex(type.toString()).toUpperCase();
+ String md5 = MD5.create().digestHex(wifiMd5 + btMd5 + typeMd5 + time + key).toUpperCase();
+ if (!md5.equals(signature)) {
+ //
+ //验签失败
+ log.info("验签失败:{}", md5);
+ BusinessException ex = new BusinessException("验签失败");
+ return Mono.error(ex);
+ }
+
+ DeviceInfoRequest request = new DeviceInfoRequest();
+ request.setWifiMac(wifiMac);
+ request.setBtMac(btMac);
+ Mono mono = deviceInfoService.selectDeviceInfoByRequest(request);
+
+ return mono.defaultIfEmpty(new DeviceInfoEntity()).flatMap(entity -> {
+ Mono mono1 = null;
+ if(entity.getId() == null){
+ entity.setWifiMac(wifiMac);
+ entity.setBtMac(btMac);
+ entity.setBatchId(1l);
+ entity.setName(entryTypeEnum.getName());
+ entity.setDeviceType(type);
+ entity.setKey( StringUtils.getRandomStr(10));//生成key
+ DateTimeFormatter df = DateTimeFormatter.ofPattern("yyMMddHHmmss");
+ entity.setSn("QG" + entryTypeEnum.getSn() +df.format(DateTimeUtils.getNowLocalDateTime()) + StringUtils.getRandomStr(3));
+ mono1 = deviceInfoService.insertDeviceInfo(entity);
+ }else{
+ entity.setKey( StringUtils.getRandomStr(10));//重新生成Key
+ mono1 = deviceInfoService.updateDeviceInfoById(entity);
+
+
+ }
+ return mono1.map(m ->{
+ return entity;
+ });
+ }).map(o -> {
+ DeviceInfoEntity deviceInfoEntity = (DeviceInfoEntity)o;
+ ReactiveValueOperations operations = reactiveStringRedisTemplate.opsForValue();
+ operations.set(RedisConstans.DEVICE_INFO + deviceInfoEntity.getSn()
+ , JSONObject.toJSONString(deviceInfoEntity)
+ , RedisConstans.ONE_HOUR).subscribe();
+ DeviceInitResp resp = new DeviceInitResp();
+ resp.setKey(deviceInfoEntity.getKey());
+ resp.setSn(deviceInfoEntity.getSn());
+ return resp;
+ });
+
+
+ }
+
@GetMapping("/init/sysTalkAnswer")
public Mono sysTalkAnswer(@RequestParam Integer type) {
diff --git a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/filter/LogWebFilter.java b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/filter/LogWebFilter.java
index fca780e..41b2ab0 100644
--- a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/filter/LogWebFilter.java
+++ b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/filter/LogWebFilter.java
@@ -89,9 +89,9 @@ public class LogWebFilter implements WebFilter {
}).doFinally(signalType -> {
WebFluxSkyWalkingOperators.continueTracing(newEx, () -> {
long endTime = System.currentTimeMillis();
- MDC.put(Log4Constans.PRINT_LOG_ID, tracId);
+ //MDC.put(Log4Constans.PRINT_LOG_ID, tracId);
log.info("api end time:{}, total time:{}", endTime, endTime - startTime);
- MDC.remove(Log4Constans.PRINT_LOG_ID);
+ //MDC.remove(Log4Constans.PRINT_LOG_ID);
});
});
diff --git a/iot-modules/iot-box-user-api/src/main/resources/bootstrap.yml b/iot-modules/iot-box-user-api/src/main/resources/bootstrap.yml
index 303ef87..051aa77 100644
--- a/iot-modules/iot-box-user-api/src/main/resources/bootstrap.yml
+++ b/iot-modules/iot-box-user-api/src/main/resources/bootstrap.yml
@@ -1,5 +1,5 @@
server:
- port: 8080
+ port: 8082
spring:
application:
name: qiuguo-iot-box-user-api
\ No newline at end of file
diff --git a/iot-modules/iot-box-websocket-api/pom.xml b/iot-modules/iot-box-websocket-api/pom.xml
index a2b29cd..7656d6d 100644
--- a/iot-modules/iot-box-websocket-api/pom.xml
+++ b/iot-modules/iot-box-websocket-api/pom.xml
@@ -18,12 +18,6 @@
org.springframework.boot
spring-boot-starter-webflux
-
-
- ch.qos.logback
- logback-classic
-
-
@@ -95,6 +89,12 @@
+
+ org.apache.skywalking
+ apm-toolkit-logback-1.x
+
+ 9.0.0
+
org.apache.skywalking
apm-toolkit-trace
diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/controller/DeviceController.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/controller/DeviceController.java
index 86fa6d2..c959324 100644
--- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/controller/DeviceController.java
+++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/controller/DeviceController.java
@@ -85,7 +85,7 @@ public class DeviceController {
if (!md5.equals(signature)) {
//
//验签失败
- log.info("验签失败");
+ log.info("验签失败:{}", md5);
BusinessException ex = new BusinessException("验签失败");
return Mono.error(ex);
}
diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/filter/LogMdcConfiguration.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/filter/LogMdcConfiguration.java
index b7e2e46..e55c141 100644
--- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/filter/LogMdcConfiguration.java
+++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/filter/LogMdcConfiguration.java
@@ -72,7 +72,9 @@ public class LogMdcConfiguration {
if(coreSubscriber.currentContext().hasKey(Log4Constans.PRINT_LOG_ID)){
MDC.put(Log4Constans.PRINT_LOG_ID, coreSubscriber.currentContext().get(Log4Constans.PRINT_LOG_ID));
}
+ //log.info("sky-------->");
WebFluxSkyWalkingOperators.continueTracing(ctx, () ->{
+ //log.info("walking=======>");
coreSubscriber.onNext(t);
});
}
diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/filter/LogWebFilter.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/filter/LogWebFilter.java
index a9e4ce0..d292f69 100644
--- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/filter/LogWebFilter.java
+++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/filter/LogWebFilter.java
@@ -1,7 +1,10 @@
package com.qiuguo.iot.box.websocket.api.filter;
import com.qiuguo.iot.base.constans.Log4Constans;
+import com.qiuguo.iot.base.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
+import org.apache.skywalking.apm.toolkit.webflux.WebFluxSkyWalkingOperators;
+import org.apache.skywalking.apm.toolkit.webflux.WebFluxSkyWalkingTraceContext;
import org.hswebframework.web.logger.ReactiveLogger;
import org.reactivestreams.Publisher;
import org.slf4j.MDC;
@@ -37,16 +40,18 @@ import java.util.Arrays;
@Configuration
@Slf4j
public class LogWebFilter implements WebFilter {
- public static String HEAD_IP = "customerIP";
@Override
public Mono filter(ServerWebExchange exchange, WebFilterChain chain) {
long startTime = System.currentTimeMillis();
ServerHttpRequest request = exchange.getRequest();
- String requestId = request.getId();
+ String requestId = request.getId();//WebFluxSkyWalkingTraceContext.segmentId(exchange);
+ log.info("获取到的traceId:{}", requestId);
+ //String pid = WebFluxSkyWalkingTraceContext.getCorrelation(exchange, Log4Constans.PRINT_LOG_ID).get();
+ //log.info("获取到的pid:{}", pid);
String ip = request.getRemoteAddress().getAddress().getHostAddress();
- if(request.getHeaders().containsKey(Log4Constans.PRINT_LOG_ID)){
+ if(request.getHeaders().containsKey(Log4Constans.HEADER_TRACE_ID)){
//网关生成的tracId
- requestId = request.getHeaders().get(Log4Constans.PRINT_LOG_ID).get(0);
+ requestId = request.getHeaders().get(Log4Constans.HEADER_TRACE_ID).get(0);
}
if(request.getHeaders().containsKey(Log4Constans.CUSTOMER_IP)){
@@ -74,17 +79,20 @@ public class LogWebFilter implements WebFilter {
// if(!request.getMethod().equals(HttpMethod.GET) && !request.getMethod().equals(HttpMethod.DELETE)){
ex.request(getRequest(exchange, ip, requestId));
String tracId = requestId;
- return chain.filter(ex.build())
+ ServerWebExchange newEx = ex.build();
+ return chain.filter(newEx)
.contextWrite(context -> {
Context contextTmp = context.put(Log4Constans.PRINT_LOG_ID, tracId);
return contextTmp;
})
.doFinally(signalType -> {
- long endTime = System.currentTimeMillis();
- MDC.put(Log4Constans.PRINT_LOG_ID, tracId);
- log.info("api end time:{}, total time:{}", endTime, endTime - startTime);
- MDC.remove(Log4Constans.PRINT_LOG_ID);
+ WebFluxSkyWalkingOperators.continueTracing(newEx, () -> {
+ long endTime = System.currentTimeMillis();
+ //MDC.put(Log4Constans.PRINT_LOG_ID, tracId);
+ log.info("api end time:{}, total time:{}", endTime, endTime - startTime);
+ //MDC.remove(Log4Constans.PRINT_LOG_ID);
+ });
});
}
@@ -95,18 +103,19 @@ public class LogWebFilter implements WebFilter {
public Flux getBody() {
Flux body = this.getDelegate().getBody();
return body.map(dataBuffer -> {
- log.info("request:{}", dataBuffer.toString(StandardCharsets.UTF_8));
+ if (/*!request.getMethod().equals(HttpMethod.GET) && */!request.getMethod().equals(HttpMethod.DELETE)) {
+ log.info("request:{}", dataBuffer.toString(StandardCharsets.UTF_8));
+ }
return dataBuffer;
});
}
- @Override
+ /* @Override
public HttpHeaders getHeaders(){
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.putAll(super.getHeaders());
- httpHeaders.set(HEAD_IP, customerIp);
- httpHeaders.set(Log4Constans.PRINT_LOG_ID, requestId);
+ httpHeaders.set(Log4Constans.HEADER_TRACE_ID, requestId);
return httpHeaders;
- }
+ }*/
};
return newRequest;
}
diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BoxWebSocketHandler.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BoxWebSocketHandler.java
index a5389ff..ec7ce9f 100644
--- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BoxWebSocketHandler.java
+++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BoxWebSocketHandler.java
@@ -30,6 +30,8 @@ import com.qiuguo.iot.data.service.device.DeviceUserBindService;
import com.qiuguo.iot.data.domain.action.Actions;
import com.qiuguo.iot.third.service.NlpService;
import lombok.extern.slf4j.Slf4j;
+import org.apache.skywalking.apm.toolkit.trace.Trace;
+import org.apache.skywalking.apm.toolkit.webflux.WebFluxSkyWalkingOperators;
import org.slf4j.MDC;
import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
import org.springframework.http.HttpHeaders;
@@ -87,7 +89,7 @@ public class BoxWebSocketHandler implements WebSocketHandler {
log.info("设备{},请求数据已超时", sn);
return session.close();
}
- String ip = headers.get(LogWebFilter.HEAD_IP).get(0);
+ String ip = headers.get(Log4Constans.CUSTOMER_IP).get(0);
if(ip.startsWith("192.") ||
ip.startsWith("10.") ||
ip.startsWith("172.") ||
@@ -107,32 +109,41 @@ public class BoxWebSocketHandler implements WebSocketHandler {
boxSession.setUserId(userId);
boxSession.setRobotId(userId);
- boxSession.setBaseLogId(headers.get(Log4Constans.PRINT_LOG_ID).get(0));
+ boxSession.setBaseLogId(headers.get(Log4Constans.HEADER_TRACE_ID).get(0));
boxSession.setLogId(boxSession.getBaseLogId());
log.info("登录成功SN:{}", sn);
Mono input = session.receive().map(webSocketMessage ->{
- newMessage(webSocketMessage, boxSession).contextWrite(context -> {
- log.info("新的消息");
- Context contextTmp = context.put(Log4Constans.PRINT_LOG_ID, boxSession.getLogId());
+ newMessage(webSocketMessage, boxSession).contextWrite(context -> {
+
+ log.info("新的消息");
+ Context contextTmp = context.put(Log4Constans.PRINT_LOG_ID, boxSession.getLogId());
+
+ return contextTmp;
+ }).subscribe();
- return contextTmp;
- }).subscribe();
return webSocketMessage;
+ }).contextWrite(context -> {
+ Context contextTmp = context.put(Log4Constans.PRINT_LOG_ID, boxSession.getLogId());
+
+ return contextTmp;
}).then();
//校验
- checkToken(boxSession, linkTime, signature, isBind).contextWrite(context -> {
+ checkToken(boxSession, linkTime, signature, isBind)
+ .subscribe();
+
+ Mono output = session.send(Flux.create(sink -> boxSession.setSink(sink))).contextWrite(context -> {
+
+
Context contextTmp = context.put(Log4Constans.PRINT_LOG_ID, boxSession.getLogId());
return contextTmp;
- }).subscribe();
-
- Mono output = session.send(Flux.create(sink -> boxSession.setSink(sink))).then();
+ }).then();
// Mono.zip() 会将多个 Mono 合并为一个新的 Mono,任何一个 Mono 产生 error 或 complete 都会导致合并后的 Mono
// 也随之产生 error 或 complete,此时其它的 Mono 则会被执行取消操作。
@@ -144,6 +155,12 @@ public class BoxWebSocketHandler implements WebSocketHandler {
return contextTmp;
}).subscribe();
+ }).contextWrite(context -> {
+
+
+ Context contextTmp = context.put(Log4Constans.PRINT_LOG_ID, boxSession.getLogId());
+
+ return contextTmp;
}).then();
}
diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/CustomerWebSocketHandler.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/CustomerWebSocketHandler.java
index 223eef1..a1d0524 100644
--- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/CustomerWebSocketHandler.java
+++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/CustomerWebSocketHandler.java
@@ -74,7 +74,7 @@ public class CustomerWebSocketHandler implements WebSocketHandler {
log.info("用户{},请求数据已超时", userId);
return session.close();
}
- String ip = headers.get(LogWebFilter.HEAD_IP).get(0);
+ String ip = headers.get(Log4Constans.CUSTOMER_IP).get(0);
UserSession userSession = new UserSession();
userSession.setUserId(userId);
userSession.setSession(session);
@@ -82,7 +82,7 @@ public class CustomerWebSocketHandler implements WebSocketHandler {
userSession.setRobotId(userId);
userSession.setSessionType(YesNo.YES.getCode());
- userSession.setBaseLogId(headers.get(Log4Constans.PRINT_LOG_ID).get(0));
+ userSession.setBaseLogId(headers.get(Log4Constans.HEADER_TRACE_ID).get(0));
userSession.setLogId(userSession.getBaseLogId());
log.info("用户成功userId:{}", userId);
Mono input = session.receive().map(webSocketMessage ->{
diff --git a/iot-modules/iot-box-websocket-api/src/main/resources/bootstrap-dev.yml b/iot-modules/iot-box-websocket-api/src/main/resources/bootstrap-dev.yml
index 7d41d24..845c1d5 100644
--- a/iot-modules/iot-box-websocket-api/src/main/resources/bootstrap-dev.yml
+++ b/iot-modules/iot-box-websocket-api/src/main/resources/bootstrap-dev.yml
@@ -24,6 +24,46 @@ spring:
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+ r2dbc:
+ #注意下面修改 easyorm相关也需要修改
+ #url: r2dbc:postgresql://localhost:5432/postgres #postgresql请使用此配置
+ url: r2dbc:mysql://192.168.8.146:30416/qiuguo_iot?ssl=false&serverZoneId=Asia/Shanghai # mysql请使用此配置
+ #url: r2dbc:h2:file:///./data/h2db/jetlinks
+ username: root
+ password: 123456
+ redis:
+ # cluster:
+ # nodes:
+ # - 127.0.0.1:7001
+ # - 127.0.0.1:7002
+ host: 192.168.8.146
+ port: 32030
+ password: 123456
+ timeout: 5000
+ rabbitmq:
+ host: 192.168.8.146
+ port: 31043
+ username: admin
+ password: 123456
+ listener:
+ simple:
+ # 设置手动ack回复
+ acknowledge-mode: manual
+ retry:
+ # 开启重试机制
+ enabled: true
+ # 重试次数
+ max-attempts: 3
+ # 重试最大间隔时间
+ max-interval: 100000
+ # 重试初始间隔时间
+ initial-interval: 100
+ # 间隔时间因子
+ multiplier: 20
+ #设置消息发送回调
+ publisher-returns: true
+ publisher-confirm-type: simple
+ virtual-host: /iot
tianqiapi:
url: https://v0.yiketianqi.com/api?unescape=1&version=v91&appid=23293151&appsecret=Lj6ZMcqn&ext=life
qiuguo:
diff --git a/iot-modules/iot-box-websocket-api/src/main/resources/logback-spring.xml b/iot-modules/iot-box-websocket-api/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..c5702be
--- /dev/null
+++ b/iot-modules/iot-box-websocket-api/src/main/resources/logback-spring.xml
@@ -0,0 +1,82 @@
+
+
+ ${HOSTNAME}
+
+
+
+
+
+
+
+
+
+
+ ${LOG_PATH}/application.${HOSTNAME}.log
+
+ ${PATTERN}
+
+
+ ${LOG_PATH}/application.%d{yyyy-MM-dd}.${HOSTNAME}.log
+
+ 30
+
+
+
+
+ ${LOG_PATH}/sql.${HOSTNAME}.log
+
+ ${PATTERN}
+
+
+ ${LOG_PATH}/sql.%d{yyyy-MM-dd}.${HOSTNAME}.log
+
+ 3
+
+
+
+
+
+
+ ${PATTERN}
+
+
+
+
+
+
+
+
+ ${SKY_PATTERN}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+