|
|
@@ -10,6 +10,7 @@ import com.xunmei.common.core.utils.JacksonUtils;
|
|
|
import com.xunmei.common.redis.enums.RedisDelayQueueEnum;
|
|
|
import com.xunmei.host.north.mapper.IotWebsocketMsgMapper;
|
|
|
import com.xunmei.host.north.service.IotWebsocketMsgService;
|
|
|
+import com.xunmei.host.server.service.IotServerInfoService;
|
|
|
import com.xunmei.host.websocket.dto.WebsocketExecuteReq;
|
|
|
import com.xunmei.host.websocket.dto.WebsocketResult;
|
|
|
import com.xunmei.host.websocket.redis.delay.RedisDelayQueueHandle;
|
|
|
@@ -42,10 +43,13 @@ public class IotWebsocketMsgServiceImpl extends ServiceImpl<IotWebsocketMsgMappe
|
|
|
@Resource
|
|
|
WebsocketService websocketService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ IotServerInfoService serverInfoService;
|
|
|
+
|
|
|
@Override
|
|
|
@Async(ThreadPoolConfig.HOST_EXECUTOR)
|
|
|
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
|
|
- public void saveMsg(WebsocketExecuteReq req, String receiveMsg) {
|
|
|
+ public void receiveAndSaveMsg(WebsocketExecuteReq req, String receiveMsg) {
|
|
|
//刚刚收到消息,还没开始处理业务逻辑,先保存消息数据
|
|
|
final IotServerInfo serverInfo = req.getServerInfo();
|
|
|
final IotWebsocketMsg msg = new IotWebsocketMsg();
|
|
|
@@ -67,6 +71,31 @@ public class IotWebsocketMsgServiceImpl extends ServiceImpl<IotWebsocketMsgMappe
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ public void sendAndSaveMsg(String iotCode, WebsocketResult res) {
|
|
|
+ //刚刚收到消息,还没开始处理业务逻辑,先保存消息数据
|
|
|
+
|
|
|
+ final IotServerInfo serverInfo = serverInfoService.selectByToken(iotCode);
|
|
|
+ final IotWebsocketMsg msg = new IotWebsocketMsg();
|
|
|
+ final LocalDateTime now = LocalDateTime.now();
|
|
|
+ msg.setId(res.getId());
|
|
|
+ msg.setEvent(res.getServiceName());
|
|
|
+ msg.setOrgId(serverInfo.getOrgId());
|
|
|
+ msg.setOrgName(serverInfo.getOrgName());
|
|
|
+ msg.setIotCode(serverInfo.getIotCode());
|
|
|
+ msg.setServerName(serverInfo.getIotName());
|
|
|
+ msg.setStatus(MessageStatusEnum.PROCESSING.getCode());
|
|
|
+ msg.setReplyContent(JacksonUtils.toJSONString(res));
|
|
|
+ msg.setReadySendTime(now);
|
|
|
+ msg.setMaxRetryTimes(3);
|
|
|
+ msg.setCurRetryTimes(0);
|
|
|
+ msg.setRetryInterval(10);
|
|
|
+ msg.setCreateTime(now);
|
|
|
+ msg.setUpdateTime(now);
|
|
|
+ save(msg);
|
|
|
+ LogUtils.WS_MSG_RETRY_LOG.info("开始下发消息到主机,msg: {}", JacksonUtils.toJSONString(msg));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
@Async(ThreadPoolConfig.HOST_EXECUTOR)
|
|
|
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
|
|
public void sendSuccessMsg(String msgId) {
|