增加几个动态配置

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>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
</dependency>
</dependencies>

View File

@ -7,6 +7,7 @@ import com.qiuguo.iot.base.utils.WebClientUtils;
import com.qiuguo.iot.third.request.AudioRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Mono;
@ -17,6 +18,7 @@ import java.util.ArrayList;
*/
@Service
@Slf4j
@RefreshScope
public class AudioService {
@Value("${tts.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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Service;
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连接词
@Service
@Slf4j
@RefreshScope
public class LacNlpService implements INlp {
@Value("${lac.huburl:}")
private String hubUrl;

View File

@ -2,13 +2,9 @@ package com.qiuguo.iot.box.websocket.api.config.properties;
import lombok.Data;
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.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* Xss配置.
*
@ -18,13 +14,18 @@ import java.util.List;
@Data
@Component
@RefreshScope
public class LacProperties {
public class SomeProperties {
/**
* Lac类型.
*/
@Value("${lac.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.utils.StringUtils;
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.box.BoxSession;
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 org.slf4j.MDC;
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.http.HttpHeaders;
import org.springframework.stereotype.Component;
@ -43,10 +42,7 @@ import java.time.Duration;
//@RefreshScope 自定义注解会导致失效
@Slf4j
public class BoxWebSocketHandler implements WebSocketHandler {
@Value("${device.checkTimeout}")
private Boolean checkTimeout;
@Value("${device.timeout}")
private Long timeOut;//2分钟
@Resource
private ReactiveStringRedisTemplate reactiveStringRedisTemplate;
@ -68,7 +64,7 @@ public class BoxWebSocketHandler implements WebSocketHandler {
* 调用LAC类型
*/
@Resource
private LacProperties lacProperties;
private SomeProperties lacProperties;
@Override
@ -78,7 +74,7 @@ public class BoxWebSocketHandler implements WebSocketHandler {
HttpHeaders headers = handshakeInfo.getHeaders();
String sn = headers.get(HttpHeaderConstans.BOX_SN).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);
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.utils.WebClientUtils;
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.UserTalkMessage;
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 org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.socket.HandshakeInfo;
@ -43,10 +42,6 @@ import java.util.Map;
@WebSocketMapping("/websocket/customer")
@Slf4j
public class CustomerWebSocketHandler implements WebSocketHandler {
@Value("${device.checkTimeout}")
private Boolean checkTimeout;
@Value("${device.timeout}")
private Long timeOut;//2分钟
@Resource
protected DeviceUserBindService deviceUserBindService;
@ -61,7 +56,7 @@ public class CustomerWebSocketHandler implements WebSocketHandler {
private BaseWebSocketService baseWebSocketService;
@Resource
private LacProperties lacProperties;
private SomeProperties lacProperties;
@Override
@ -73,7 +68,7 @@ public class CustomerWebSocketHandler implements WebSocketHandler {
String token = headers.get(HttpHeaderConstans.API_TOKEN).get(0);
Long userId = Long.valueOf(headers.get(HttpHeaderConstans.USER_ID).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);
return session.close();

View File

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

View File

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