Browse Source

fix 可重复读问题

18339543638 3 years ago
parent
commit
215c7ee23b

+ 1 - 1
nb-common/ws-common/src/main/java/com/nb/common/websocket/ws/HeartBeatConfig.java

@@ -25,6 +25,6 @@ public class HeartBeatConfig implements CommandLineRunner {
     @Override
     public void run(String... args) {
         serverTioConfig.getServerTioConfig().setServerAioListener(new DefaultWsServerAioListener(wsHandlers));
-        serverTioConfig.getServerTioConfig().closeRunnable=new CloseRunnable(serverTioConfig.getServerTioConfig().tioExecutor);
+//        serverTioConfig.getServerTioConfig().closeRunnable=new CloseRunnable(serverTioConfig.getServerTioConfig().tioExecutor);
     }
 }

+ 5 - 1
nb-service/web-service/src/main/java/com/nb/web/service/bus/listener/DeviceInfoListener.java

@@ -184,7 +184,11 @@ public class DeviceInfoListener implements IIotMsgHandler {
             });
 
             //所有事务处理完成后更新缓存信息
-            cacheOperation.forEach(Supplier::get);
+            for (Supplier<?> supplier : cacheOperation) {
+                //异步改为同步,否则数据会出现可重复读误差
+                supplier.get();
+            }
+//            cacheOperation.forEach(Supplier::get);
             log.info("设备数据处理结束:{},耗时【{}】",JSONUtil.toJsonStr(device),(System.currentTimeMillis()-startTime));
             return device;
         }