From c04171420e9522422d110acc165bd8c608c592fb Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Fri, 09 Oct 2020 13:20:41 +0800 Subject: [PATCH] 优化响应速度,取消flag标记以及具体设备的mac。 --- src/main/java/com/moral/webSocketServer/BSTestWebsocketServer.java | 36 ++++++++++++++++++------------------ 1 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/moral/webSocketServer/BSTestWebsocketServer.java b/src/main/java/com/moral/webSocketServer/BSTestWebsocketServer.java index 198f26a..9b42ef0 100644 --- a/src/main/java/com/moral/webSocketServer/BSTestWebsocketServer.java +++ b/src/main/java/com/moral/webSocketServer/BSTestWebsocketServer.java @@ -61,6 +61,7 @@ private static Map<String, Sensor> sensors; + @PostConstruct public void init() { sensors = new HashMap<>(); @@ -93,23 +94,25 @@ paramMap.put("regionCode", regionCode); ParameterUtils.getRegionType4RegionCode(paramMap); List<Device> deviceList = deviceService.queryDevice(paramMap); + Map<String,Device> deviceMap = new HashMap<>(); try { Connection connection = RabbitMQUtils.getConnection(); final Channel channel = connection.createChannel(); //������������������ String queue = channel.queueDeclare().getQueue(); - //������������������������routingKey������������ String routingKey = ""; for (Device d : deviceList) { + deviceMap.put(d.getMac(),d); routingKey = orgId + "." + d.getMac(); channel.queueBind(queue, exchange, routingKey); } + //������������,��������������������� - channel.basicQos(1);//��������������������������� + channel.basicQos(30);//��������������� channel.basicConsume(queue, false, new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { @@ -119,10 +122,10 @@ //���������������������������������������mac���������������������������������mac������������ if(mac!=null&&(!mac.equals(0))) - sendDeviceInfo(message,deviceList); + sendDeviceInfo(message,deviceMap); //������������ - channel.basicAck(envelope.getDeliveryTag(), false); + channel.basicAck(envelope.getDeliveryTag(), true); //������socket������������������ if (!webSocketMap.containsKey(accountId)) { @@ -195,30 +198,27 @@ * @Author: ��������� * @Date: 2020/9/30 */ - private void sendDeviceInfo(Map<String, Object> param,List<Device> deviceList) { + private void sendDeviceInfo(Map<String, Object> param,Map<String,Device> deviceMap) { String deviceMac = (String) param.get("mac"); if (mac.equals(deviceMac)) { try { Map<String,Object> sortMap = new LinkedHashMap<>(); - Map<String, Object> map = new HashMap<>(); + + //��������������������������������� + Device device =deviceMap.get(mac); + sortMap.put("������",device.getName()); + sortMap.put("������",device.getAddress()); + + + //��������������������������������� param.forEach((key, value) -> { Sensor sensor = sensors.get(key); if (!ObjectUtils.isEmpty(sensor)) { String unit = ObjectUtils.isEmpty(sensor.getUnit()) ? "" : (String) sensor.getUnit(); - map.put(sensor.getName(), value + unit); + sortMap.put(sensor.getName(), value + unit); } }); - String mac = (String) param.get("mac"); - map.put("mac", mac); - map.put("flag",1); - for (Device device : deviceList) { - if(mac.equals(device.getMac())){ - sortMap.put("������",device.getName()); - sortMap.put("������",device.getAddress()); - sortMap.putAll(map); - break; - } - } + sendMessage(JSON.toJSONString(sortMap)); } catch (IOException e) { log.error("������mac������������������������"); -- Gitblit v1.8.0