增加几个动态配置

This commit is contained in:
wulin 2023-10-26 19:51:09 +08:00
parent b9396e3878
commit c784d5d35c
8 changed files with 26 additions and 23 deletions

View File

@ -75,6 +75,10 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
</dependency>
</dependencies> </dependencies>

View File

@ -7,6 +7,7 @@ import com.qiuguo.iot.base.utils.WebClientUtils;
import com.qiuguo.iot.third.request.AudioRequest; import com.qiuguo.iot.third.request.AudioRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
@ -17,6 +18,7 @@ import java.util.ArrayList;
*/ */
@Service @Service
@Slf4j @Slf4j
@RefreshScope
public class AudioService { public class AudioService {
@Value("${tts.url:}") @Value("${tts.url:}")
private String url; private String url;

View File

@ -12,6 +12,7 @@ import com.qiuguo.iot.third.nlp.lac.HubLacRequest;
import com.qiuguo.iot.third.nlp.lac.LacRequest; import com.qiuguo.iot.third.nlp.lac.LacRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClient;
@ -33,6 +34,7 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
//LAC中的tag说明 v动词 n名称 PER/nr人名 a量词 w标点符号 m数字中文阿拉伯 TIME时间词 vn动名词组 xc语气词 c连接词 //LAC中的tag说明 v动词 n名称 PER/nr人名 a量词 w标点符号 m数字中文阿拉伯 TIME时间词 vn动名词组 xc语气词 c连接词
@Service @Service
@Slf4j @Slf4j
@RefreshScope
public class LacNlpService implements INlp { public class LacNlpService implements INlp {
@Value("${lac.huburl:}") @Value("${lac.huburl:}")
private String hubUrl; private String hubUrl;

View File

@ -2,13 +2,9 @@ package com.qiuguo.iot.box.websocket.api.config.properties;
import lombok.Data; import lombok.Data;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/** /**
* Xss配置. * Xss配置.
* *
@ -18,13 +14,18 @@ import java.util.List;
@Data @Data
@Component @Component
@RefreshScope @RefreshScope
public class LacProperties { public class SomeProperties {
/** /**
* Lac类型. * Lac类型.
*/ */
@Value("${lac.type}") @Value("${lac.type}")
private String type; private String type;
@Value("${device.checkTimeout}")
private Boolean checkTimeout;
@Value("${device.timeout}")
private Long timeOut;//2分钟
} }

View File

@ -8,7 +8,7 @@ import com.qiuguo.iot.base.enums.*;
import com.qiuguo.iot.base.model.UserDeviceInfoModel; import com.qiuguo.iot.base.model.UserDeviceInfoModel;
import com.qiuguo.iot.base.utils.StringUtils; import com.qiuguo.iot.base.utils.StringUtils;
import com.qiuguo.iot.box.websocket.api.command.ActionCommand; import com.qiuguo.iot.box.websocket.api.command.ActionCommand;
import com.qiuguo.iot.box.websocket.api.config.properties.LacProperties; import com.qiuguo.iot.box.websocket.api.config.properties.SomeProperties;
import com.qiuguo.iot.box.websocket.api.domain.BaseSession; import com.qiuguo.iot.box.websocket.api.domain.BaseSession;
import com.qiuguo.iot.box.websocket.api.domain.box.BoxSession; import com.qiuguo.iot.box.websocket.api.domain.box.BoxSession;
import com.qiuguo.iot.box.websocket.api.domain.box.BoxTalkMessage; import com.qiuguo.iot.box.websocket.api.domain.box.BoxTalkMessage;
@ -26,7 +26,6 @@ import com.qiuguo.iot.third.service.NlpService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC; import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.data.redis.core.ReactiveStringRedisTemplate; import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -43,10 +42,7 @@ import java.time.Duration;
//@RefreshScope 自定义注解会导致失效 //@RefreshScope 自定义注解会导致失效
@Slf4j @Slf4j
public class BoxWebSocketHandler implements WebSocketHandler { public class BoxWebSocketHandler implements WebSocketHandler {
@Value("${device.checkTimeout}")
private Boolean checkTimeout;
@Value("${device.timeout}")
private Long timeOut;//2分钟
@Resource @Resource
private ReactiveStringRedisTemplate reactiveStringRedisTemplate; private ReactiveStringRedisTemplate reactiveStringRedisTemplate;
@ -68,7 +64,7 @@ public class BoxWebSocketHandler implements WebSocketHandler {
* 调用LAC类型 * 调用LAC类型
*/ */
@Resource @Resource
private LacProperties lacProperties; private SomeProperties lacProperties;
@Override @Override
@ -78,7 +74,7 @@ public class BoxWebSocketHandler implements WebSocketHandler {
HttpHeaders headers = handshakeInfo.getHeaders(); HttpHeaders headers = handshakeInfo.getHeaders();
String sn = headers.get(HttpHeaderConstans.BOX_SN).get(0); String sn = headers.get(HttpHeaderConstans.BOX_SN).get(0);
Long linkTime = Long.parseLong(headers.get(HttpHeaderConstans.TIME).get(0)); Long linkTime = Long.parseLong(headers.get(HttpHeaderConstans.TIME).get(0));
if(checkTimeout && System.currentTimeMillis() - linkTime > timeOut){ if(lacProperties.getCheckTimeout() && System.currentTimeMillis() - linkTime > lacProperties.getTimeOut()){
//关闭连接 //关闭连接
log.info("设备{},请求数据已超时", sn); log.info("设备{},请求数据已超时", sn);
return session.close(); return session.close();

View File

@ -9,7 +9,7 @@ import com.qiuguo.iot.base.enums.ResponeEnum;
import com.qiuguo.iot.base.enums.YesNo; import com.qiuguo.iot.base.enums.YesNo;
import com.qiuguo.iot.base.utils.WebClientUtils; import com.qiuguo.iot.base.utils.WebClientUtils;
import com.qiuguo.iot.box.websocket.api.command.ActionCommand; import com.qiuguo.iot.box.websocket.api.command.ActionCommand;
import com.qiuguo.iot.box.websocket.api.config.properties.LacProperties; import com.qiuguo.iot.box.websocket.api.config.properties.SomeProperties;
import com.qiuguo.iot.box.websocket.api.domain.user.UserSession; import com.qiuguo.iot.box.websocket.api.domain.user.UserSession;
import com.qiuguo.iot.box.websocket.api.domain.user.UserTalkMessage; import com.qiuguo.iot.box.websocket.api.domain.user.UserTalkMessage;
import com.qiuguo.iot.box.websocket.api.filter.LogMdcConfiguration; import com.qiuguo.iot.box.websocket.api.filter.LogMdcConfiguration;
@ -23,7 +23,6 @@ import com.qiuguo.iot.third.service.NlpService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC; import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.reactive.socket.HandshakeInfo; import org.springframework.web.reactive.socket.HandshakeInfo;
@ -43,10 +42,6 @@ import java.util.Map;
@WebSocketMapping("/websocket/customer") @WebSocketMapping("/websocket/customer")
@Slf4j @Slf4j
public class CustomerWebSocketHandler implements WebSocketHandler { public class CustomerWebSocketHandler implements WebSocketHandler {
@Value("${device.checkTimeout}")
private Boolean checkTimeout;
@Value("${device.timeout}")
private Long timeOut;//2分钟
@Resource @Resource
protected DeviceUserBindService deviceUserBindService; protected DeviceUserBindService deviceUserBindService;
@ -61,7 +56,7 @@ public class CustomerWebSocketHandler implements WebSocketHandler {
private BaseWebSocketService baseWebSocketService; private BaseWebSocketService baseWebSocketService;
@Resource @Resource
private LacProperties lacProperties; private SomeProperties lacProperties;
@Override @Override
@ -73,7 +68,7 @@ public class CustomerWebSocketHandler implements WebSocketHandler {
String token = headers.get(HttpHeaderConstans.API_TOKEN).get(0); String token = headers.get(HttpHeaderConstans.API_TOKEN).get(0);
Long userId = Long.valueOf(headers.get(HttpHeaderConstans.USER_ID).get(0)); Long userId = Long.valueOf(headers.get(HttpHeaderConstans.USER_ID).get(0));
Long linkTime = Long.parseLong(headers.get(HttpHeaderConstans.TIME).get(0)); Long linkTime = Long.parseLong(headers.get(HttpHeaderConstans.TIME).get(0));
if(checkTimeout && System.currentTimeMillis() - linkTime > timeOut){ if(lacProperties.getCheckTimeout() && System.currentTimeMillis() - linkTime > lacProperties.getTimeOut()){
//关闭连接 //关闭连接
log.info("用户{},请求数据已超时", userId); log.info("用户{},请求数据已超时", userId);
return session.close(); return session.close();

View File

@ -42,6 +42,9 @@ public class BaseWebSocketService {
@Value("${tts.suanfa}") @Value("${tts.suanfa}")
private Boolean suanfa; private Boolean suanfa;
@Value("${tts.max.text}")
private Integer ONE_MAX_TEXT;
protected static ConcurrentHashMap<Long, UserSession> userGroup = new ConcurrentHashMap<>(); protected static ConcurrentHashMap<Long, UserSession> userGroup = new ConcurrentHashMap<>();
protected static ConcurrentHashMap<String, BoxSession> boxGroup = new ConcurrentHashMap<>(); protected static ConcurrentHashMap<String, BoxSession> boxGroup = new ConcurrentHashMap<>();
@ -58,8 +61,6 @@ public class BaseWebSocketService {
@Autowired @Autowired
private ReactiveStringRedisTemplate reactiveStringRedisTemplate; private ReactiveStringRedisTemplate reactiveStringRedisTemplate;
protected static int ONE_MAX_TEXT = 50;

View File

@ -46,6 +46,8 @@ qiuguo:
checktoken: checktoken:
url: https://qiuguo-app.pre.qiuguojihua.com/pre-api/user/user/getUser url: https://qiuguo-app.pre.qiuguojihua.com/pre-api/user/user/getUser
tts: tts:
#max:
# text: 30 #当发送给前端文字超过改值时,分批发送给前端
suanfa: true #nacos控制变化 suanfa: true #nacos控制变化
url: http://192.168.8.211:18000/run/predict #算法语音合成 url: http://192.168.8.211:18000/run/predict #算法语音合成
lac: lac: