springcloud_k8s_panzhihuazhihuishequ/service_property/pom.xml
@@ -111,22 +111,10 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--kafka依赖 --> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.7.6</version> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka-test</artifactId> <scope>test</scope> <version>2.7.6</version> </dependency> <!--json转换工具包依赖 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> <version>2.3.4.RELEASE</version> </dependency> </dependencies> springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/config/KafkaConfig.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/config/WebSocketClient.java
New file @@ -0,0 +1,129 @@ package com.panzhihua.service_property.config; import java.io.IOException; import java.util.Date; import javax.annotation.Resource; import javax.websocket.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import com.alibaba.fastjson.JSONObject; import com.panzhihua.service_property.dao.ComPropertyAlarmDao; import com.panzhihua.service_property.dto.DeviceDto; import com.panzhihua.service_property.entity.ComPropertyAlarm; import cn.hutool.extra.spring.SpringUtil; import lombok.extern.slf4j.Slf4j; /** * 应用模块名称 * <p> * 一键报警设备消息 代码描述 * <p> * Copyright: Copyright (C) 2021 XXX, Inc. All rights reserved. * <p> * Company: 成都呐喊信息技术有限公司 * <p> * * @author manailin * @since 2021/9/27 16:31 */ @Slf4j @Component @ClientEndpoint public class WebSocketClient { private static final Logger logger = LoggerFactory.getLogger(WebSocketClient.class); /** 保存报警记录服务 */ @Resource private ComPropertyAlarmDao comPropertyAlarmDao; /** * session */ private Session session; /** * <beforeInit> * * @throws */ public static void beforeInit() { // 在socket配置类中调用此方法可以完成一些需要初始化注入的操作 } @OnOpen public void onOpen(Session session) { logger.info("连接开启..."); this.session = session; } @OnMessage public void onMessage(String message, Session session) { // 提取数据 dealData(message); } @Async void dealData(String message) { comPropertyAlarmDao = SpringUtil.getBean(ComPropertyAlarmDao.class); DeviceDto deviceInfo = JSONObject.parseObject(message, DeviceDto.class); if (deviceInfo.getCallstatus().equals("RINGING")) { logger.info("收到设备报警信息:{}", message); ComPropertyAlarm comPropertyAlarm = new ComPropertyAlarm(); comPropertyAlarm.setSerialNo(deviceInfo.getCallid()); comPropertyAlarm.setStatus(1); comPropertyAlarm.setCreateTime(new Date()); comPropertyAlarmDao.insert(comPropertyAlarm); } } @OnClose public void onClose() { logger.info("长连接关闭..."); } @OnError public void onError(Session session, Throwable t) { logger.error("error, cause: ", t); } /** * <异步发送message> * * @param message * message @throws */ public void send(String message) { this.session.getAsyncRemote().sendText(message); } /** * <发送message> * * @param message * message @throws */ public void sendMessage(String message) { try { session.getBasicRemote().sendText(message); } catch (IOException ex) { logger.error("error, cause: ", ex); } } /** * <关闭连接> * * @throws */ public void close() throws IOException { if (this.session.isOpen()) { this.session.close(); } } } springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/config/WebSocketConfig.java
New file @@ -0,0 +1,136 @@ package com.panzhihua.service_property.config; import java.net.URI; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import javax.websocket.ContainerProvider; import javax.websocket.WebSocketContainer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; /** * 应用模块名称 * <p> * 一键报警websocket 配置 代码描述 * <p> * Copyright: Copyright (C) 2021 XXX, Inc. All rights reserved. * <p> * Company: 成都呐喊信息技术有限公司 * <p> * * @author manailin * @since 2021/9/27 16:31 */ @Configuration @Order(1) public class WebSocketConfig implements ApplicationRunner { private static final Logger logger = LoggerFactory.getLogger(WebSocketConfig.class); private static Boolean isOk; private static WebSocketContainer container = ContainerProvider.getWebSocketContainer(); private WebSocketClient client; /** * 定义定时任务线程 */ private ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1); @Value("${websocket.uri}") private String uri; @Value("${websocket.ip}") private String ip; /** * <run> * * @param args * args @throws */ @Override public void run(ApplicationArguments args) throws Exception { logger.info("[WebSocketConfig] web socket init start."); // websocket客户端初始化 wsClientInit(); } /** * <websocket客户端初始化> * * @throws */ public void wsClientInit() { logger.info("[WebSocketConfig] start to wsClientInit"); try { client = new WebSocketClient(); WebSocketClient.beforeInit(); container.connectToServer(client, new URI(uri)); isOk = true; } catch (Exception e) { isOk = false; logger.error("error, cause: ", e); } /** * 参数:1、任务体 2、首次执行的延时时间 3、任务执行间隔 4、间隔时间单位 **/ scheduledExecutorService.scheduleAtFixedRate(new Runnable() { @Override public void run() { // 心跳检测 断线重连 heartbeatCheck(); } }, 1, 30, TimeUnit.SECONDS); logger.info("[WebSocketConfig] end to wsClientInit"); } /** * <心跳检测 断线重连> * * */ private void heartbeatCheck() { logger.info("[WebSocketConfig] start to heartbeatCheck"); if (isOk != null && isOk) { try { client.send("ping " + ip); } catch (Exception e) { isOk = false; } } else { // 系统连接失败进行重试 logger.warn("系统连接失败,正在重连..."); try { client.send("ping " + ip); logger.warn("系统重连成功!"); isOk = true; } catch (Exception e) { try { client = new WebSocketClient(); container.connectToServer(client, new URI(uri)); isOk = true; } catch (Exception e1) { isOk = false; } if (isOk != null && isOk) { logger.warn("系统重连成功!"); } } } } } springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/CallForward.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/CallForwardDto.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/CustomBtn.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/DeviceDto.java
New file @@ -0,0 +1,33 @@ package com.panzhihua.service_property.dto; import lombok.Data; /** * 应用模块名称 * <p> * 一键报警设备消息 代码描述 * <p> * Copyright: Copyright (C) 2021 XXX, Inc. All rights reserved. * <p> * Company: 成都呐喊信息技术有限公司 * <p> * * @author manailin * @since 2021/9/27 16:31 */ @Data public class DeviceDto { /** 呼叫状态 */ private String callstatus; /** 指令 */ private String cmd; /** 状态 */ private String status; /** 呼叫人员ID */ private String userid; /** 呼叫iD */ private String callid; /** 呼叫时间 */ private String _ts; } springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/DeviceInfoDto.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/TaskDetail.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/TaskInfo.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/listener/OrderListener.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/resources/bootstrap.yml
@@ -1,25 +1,6 @@ spring: application: name: property kafka: bootstrap-servers: 182.151.37.143:9092 #kafka地址 consumer: group-id: order-consumer key-deserializer: org.apache.kafka.common.serialization.StringDeserializer #kafkaTemplate.send()方法参数类型 value-deserializer: org.apache.kafka.common.serialization.StringDeserializer auto-offset-reset: earliest security: protocol: PLAINTEXT producer: batch-size: 16384 buffer-memory: 33554432 retries: 0 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer properties: linger.ms: 1 security: protocol: PLAINTEXT cloud: config: discovery: @@ -39,7 +20,6 @@ client: service-url: defaultZone: http://${EUREKA_URL:localhost}:8192/eureka #实体加密、解密、字段脱敏拦截设置 domain: @@ -62,9 +42,7 @@ tags: application: property # kafka自定义消息发送配置 kafka: topic: kafka-demo-topic: Task_Info kafka-demo-key: order-key autoCreate: false #从一键报警设备websocket订阅时间消息配置 websocket: uri: ws://182.151.37.143:8086/status ip: 182.151.37.143