From f418c86aeec75a56aeb53993a887fe1d919e6642 Mon Sep 17 00:00:00 2001 From: zhizhi wu <2377881365@qq.com> Date: Mon, 4 Jan 2021 09:44:37 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=94=9F=E4=BA=A7=20mongodb=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=20=E5=92=8C=E6=97=A5=E5=BF=97=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/application-prod.properties | 31 +++++++++++++++++-- .../src/main/resources/application.properties | 2 +- ccmq/src/main/resources/logback-spring.xml | 21 +++++++------ 3 files changed, 41 insertions(+), 13 deletions(-) diff --git a/ccmq/src/main/resources/application-prod.properties b/ccmq/src/main/resources/application-prod.properties index e343dbc..df81c1f 100644 --- a/ccmq/src/main/resources/application-prod.properties +++ b/ccmq/src/main/resources/application-prod.properties @@ -30,8 +30,35 @@ spring.rabbitmq.password=111111 # MongoDB配置信息 spring.data.mongodb.uri=mongodb://wei:111111@127.0.0.1:27017/test -spring.data.mongodb.option.socket-timeout=5000 -spring.data.mongodb.option.max-connection-idle-time=10000 + +# 最大连接数,每一台服务器 +spring.data.mongodb.option.max-connection-per-host=100 +# 可阻塞线程队列容量 +spring.data.mongodb.option.threads-allowed-to-block-for-connection-multiplier=10 +# 每一台服务器的最小连接数 +spring.data.mongodb.option.min-connection-per-host=1 + +#连接超时时间 1分钟 +spring.data.mongodb.option.connect-timeout=60000 +#等待时间 120000 2 * 60 * 1000 +spring.data.mongodb.option.max-wait-time=120000 +#Socket超时时间 +spring.data.mongodb.option.socket-timeout=10000 +#保持连接 +spring.data.mongodb.option.socket-keep-alive=true + +## 连接空闲时间8小时,否则连接太过频繁 +spring.data.mongodb.option.max-connection-idle-time=28800000 +spring.data.mongodb.option.max-connection-life-time=0 +#心跳 +spring.data.mongodb.option.heartbeat-socket-timeout=10000 +spring.data.mongodb.option.heartbeat-connect-timeout=15000 +spring.data.mongodb.option.min-heartbeat-frequency=5000 +spring.data.mongodb.option.heartbeat-frequency=100000 + + + + # Settings setting.snowflake.workerId = 1 setting.snowflake.datacenterId = 1 diff --git a/ccmq/src/main/resources/application.properties b/ccmq/src/main/resources/application.properties index dd8b329..97e42eb 100644 --- a/ccmq/src/main/resources/application.properties +++ b/ccmq/src/main/resources/application.properties @@ -1,5 +1,5 @@ # 选择开发环境{dev|test|prod} -spring.profiles.active=test +spring.profiles.active=prod # 设置应用名 spring.application.name=tall-message diff --git a/ccmq/src/main/resources/logback-spring.xml b/ccmq/src/main/resources/logback-spring.xml index c3f03e2..1207337 100644 --- a/ccmq/src/main/resources/logback-spring.xml +++ b/ccmq/src/main/resources/logback-spring.xml @@ -1,22 +1,23 @@ cc-message - + - + - + - + + @@ -28,19 +29,19 @@ - + + <!– 鏃ュ織淇濆瓨鍛ㄦ湡 –> 30 - + <!– 鎬诲ぇ灏 –> 100MB %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n - + --> @@ -136,7 +137,7 @@ - + \ No newline at end of file From 9edfae0a5ef738fbb5a1e450ef4618dcaa015a55 Mon Sep 17 00:00:00 2001 From: zhizhi wu <2377881365@qq.com> Date: Sat, 16 Jan 2021 23:25:13 +0800 Subject: [PATCH 2/3] =?UTF-8?q?modbus=20=E5=8A=9F=E8=83=BD=E7=A0=81?= =?UTF-8?q?=E5=8C=BA=E5=88=86=E6=8E=88=E6=9D=83=E5=92=8C=E5=BF=83=E8=B7=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../netty/tcphexserver/ModbusConverter.java | 92 +++++++++++-------- .../ccmq/lowlevel/message/MessageHandler.java | 39 +++++--- .../lowlevel/message/client/AuthMessage.java | 4 +- .../message/client/ModBusMessage.java | 4 +- .../message/common/MessageConstant.java | 72 +++++++++------ .../message/server/UnAuthMessage.java | 15 +++ .../ccmq/common/TallMessageApplication.java | 6 +- .../bean/dto/ccmodbus/CCModBusEntity.java | 31 ++++++- .../common/bean/dto/ccmodbus/Register.java | 2 + .../tall/ccmq/common/config/RedisConfig.java | 6 +- .../main/resources/application-dev.properties | 3 +- .../resources/application-test.properties | 25 ++++- .../src/main/resources/application.properties | 2 +- 13 files changed, 206 insertions(+), 95 deletions(-) create mode 100644 ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/server/UnAuthMessage.java diff --git a/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/client/netty/tcphexserver/ModbusConverter.java b/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/client/netty/tcphexserver/ModbusConverter.java index 0f48db1..0daffea 100644 --- a/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/client/netty/tcphexserver/ModbusConverter.java +++ b/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/client/netty/tcphexserver/ModbusConverter.java @@ -27,24 +27,27 @@ public class ModbusConverter { short register = (short) ccModBusEntity.getRegisterStartAddr(); byte oper = (byte) (ccModBusEntity.getOper() & 0xFF); - MessageConstant.Register type = MessageConstant.Register.valueOf(data[0], data[1] ); - if (type == null) { - message = new InMessage(); - message.setData(JacksonUtil.beanToJson(new ModBusMessage(register,oper,ccModBusEntity.getModbusData()))); - message.setToDomain(MessageConstant.DomainType.Server); - return message; - } - switch (type) { - case Ping: { - message = toHeartMessage(register,oper,ccModBusEntity.getValue()); +// MessageConstant.Register type = MessageConstant.Register.valueOf(data[0], data[1] ); +// if (type == null) { +// message = new InMessage(); +// message.setData(JacksonUtil.beanToJson(new ModBusMessage(register,oper,ccModBusEntity.getModbusData()))); +// message.setToDomain(MessageConstant.DomainType.Server); +// return message; +// } + switch (oper) { + case CCModBusEntity.Oper.PING: { + message = toHeartMessage(); break; } - case Auth:{ - message = toAuthMessage(register,oper,ccModBusEntity.getValue()); + case CCModBusEntity.Oper.AUTH:{ + message = toAuthMessage(register,ccModBusEntity.getValue()); break; } default:{ - message = null; + // 璇诲啓鎿嶄綔 + message = new InMessage(); + message.setData(JacksonUtil.beanToJson(new ModBusMessage(ccModBusEntity.getAddr(), register,oper,ccModBusEntity.getModbusData()))); + message.setToDomain(MessageConstant.DomainType.Server); } } return message; @@ -70,11 +73,10 @@ public class ModbusConverter { // } /** - * OriginaData ==> 0x00 - * @param oper + * 蹇冭烦 * @return */ - private static InMessage toHeartMessage(short addr, int oper, byte[] originData) throws JsonProcessingException { + private static InMessage toHeartMessage() throws JsonProcessingException { InMessage message = new InMessage(); PingMessage serverMessage = new PingMessage(); message.setData(JacksonUtil.beanToJson(serverMessage)); @@ -88,20 +90,25 @@ public class ModbusConverter { /** * OriginaData ==> 0x00 0x00 0x00 0x64 - * @param oper + * 鎺堟潈 + * @param register 涓氬姟绫诲瀷 + * @param values 鎺堟潈鏁版嵁 涓荤増鏈 娆$増鏈 鎺堟潈ID * @return */ - private static InMessage toAuthMessage(short register, int oper, byte[] values) throws JsonProcessingException { + private static InMessage toAuthMessage(short register, byte[] values) throws JsonProcessingException { + if (values == null || values.length < 3) { + return null; + } + byte major = values[CCModBusEntity.SIZE_MAJOR]; + byte minor = values[CCModBusEntity.SIZE_MINOR]; long userId = 0; - for(int i=0;i register = wrapperedChannel.getRegister(); + // 鎺堟潈鏁版嵁 + Long authId = Long.parseLong(wrapperedChannel.getUserId()); + // 鐗堟湰淇℃伅 + String version = wrapperedChannel.getVersion(); switch (oper) { case CCModBusEntity.Oper.READ : { // TODO 璇绘搷浣 - WrapperedChannel wrapperedChannel = ChannelManager.getWrapperedChannelByChannel(ChannelManager.getCurrentChannel()); - Object o = wrapperedChannel.getRegister().get(modBusMessage.getData().getRegister()); + Object o = register.get(modBusMessage.getData().getRegister()); break; } case CCModBusEntity.Oper.WRITE : { @@ -468,11 +481,11 @@ public class MessageHandler { byte[] modBusData = modBusMessage.getData().getModBusData(); // 璇昏捣濮嬪瘎瀛樺櫒鍦板潃 int startAddr = CCModBusEntity.getRegisterStartAddr(modBusData); + // 鍐欏瘎瀛樺櫒鏁伴噺 int num = CCModBusEntity.getRegisterStartNum(modBusData); - WrapperedChannel wrapperedChannel = ChannelManager.getWrapperedChannelByChannel(ChannelManager.getCurrentChannel()); - Map register = wrapperedChannel.getRegister(); - // 鎺堟潈鏁版嵁 - Long authId = register.get(String.valueOf(MessageConstant.Register.Auth.getAddr())); + // 鎺ユ敹鏁版嵁鐨勪笟鍔℃斁 + byte addr = modBusMessage.getData().getAddr(); + OutMessageSet set = new OutMessageSet(); for (int i = 0; i < num; i++) { // 瀵勫瓨鍣ㄧ殑鍘熷鏁版嵁 @@ -493,13 +506,17 @@ public class MessageHandler { register1.setAuthId(authId); register1.setAddr(startAddr+i); register1.setValue(value); + register1.setVersion(version); OutMessage outMessage1 = new OutMessage(JacksonUtil.beanToJson(register1)); set.add(outMessage1); } - if (CollectionUtil.isNotEmpty(set.getMessageSet())) { - messageHandler.rabbitTemplate.convertAndSend("wisdom_car", + String mqName = (String)RedisUtil.hget(MessageConstant.Redis.KEY_MQ_COLLECTION, String.valueOf(addr)); + logger.info("mqName:{}", mqName); + if (CollectionUtil.isNotEmpty(set.getMessageSet()) && StrUtil.isNotEmpty(mqName)) { + + messageHandler.rabbitTemplate.convertAndSend(mqName, JacksonUtil.beanToJson(set)); - logger.info("modbus閫氱煡mq:{}", set); + logger.info("modbus閫氱煡mq({}):{}",mqName, set); } // 3. 灏佽杩斿洖鍊 outMessage = new OutMessage(JacksonUtil.beanToJson(new ModBusAckMessage(modBusData))); diff --git a/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/client/AuthMessage.java b/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/client/AuthMessage.java index 06f4420..03770c7 100644 --- a/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/client/AuthMessage.java +++ b/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/client/AuthMessage.java @@ -40,9 +40,11 @@ public class AuthMessage extends ServerMessage { data.setMinor(minor); } - public AuthMessage(Long authId){ + public AuthMessage(Long authId,int major,int minor){ this(); data = new Data(); data.setAuthId(authId); + data.setMajor(major); + data.setMinor(minor); } } diff --git a/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/client/ModBusMessage.java b/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/client/ModBusMessage.java index f42c439..cfa20a3 100644 --- a/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/client/ModBusMessage.java +++ b/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/client/ModBusMessage.java @@ -15,6 +15,7 @@ public class ModBusMessage extends ServerMessage { @lombok.Data public static class Data{ + private byte addr; private short register; private byte oper; private byte[] modBusData; @@ -27,9 +28,10 @@ public class ModBusMessage extends ServerMessage { public ModBusMessage(){ setType(MessageConstant.ClientMessageType.ModBus.name()); } - public ModBusMessage(short register, byte oper, byte[] modBusData) { + public ModBusMessage(byte addr, short register, byte oper, byte[] modBusData) { this(); data = new Data(); + data.addr = addr; data.register = register; data.oper = oper; data.modBusData = modBusData; diff --git a/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/common/MessageConstant.java b/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/common/MessageConstant.java index 34c6102..882033e 100644 --- a/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/common/MessageConstant.java +++ b/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/common/MessageConstant.java @@ -8,39 +8,49 @@ import lombok.Data; * 娑堟伅鐩稿叧甯搁噺 */ public class MessageConstant { + /** - * 瀵勫瓨鍣ㄥ湴鍧 + * redis鍙傛暟 */ - public enum Register{ - /**鎺堟潈*/ - Auth((byte) 0x00, (byte) 0x01), - /**蹇冭烦*/ - Ping((byte) 0x00, (byte) 0x02), - ; - - public byte first; - public byte second; - - Register(byte first, byte second){ - this.first = first; - this.second = second; - - } + public static class Redis{ + /**mq闆嗗悎key*/ + public static final String KEY_MQ_COLLECTION = "mqCollection"; + } - public long getAddr(){ - long addr = ((long)first << 8 | second) & 0xFFFF; - return addr; - } - public static Register valueOf(byte first, byte second) { - for(Register register : Register.values()){ - if (register.first == first && register.second == second) { - return register; - } - } - return null; - } - } +// /** +// * 瀵勫瓨鍣ㄥ湴鍧 +// */ +// public enum Register{ +// /**鎺堟潈*/ +// Auth((byte) 0x00, (byte) 0x01), +// /**蹇冭烦*/ +// Ping((byte) 0x00, (byte) 0x02), +// ; +// +// public byte first; +// public byte second; +// +// Register(byte first, byte second){ +// this.first = first; +// this.second = second; +// +// } +// +// public long getAddr(){ +// long addr = ((long)first << 8 | second) & 0xFFFF; +// return addr; +// } +// +// public static Register valueOf(byte first, byte second) { +// for(Register register : Register.values()){ +// if (register.first == first && register.second == second) { +// return register; +// } +// } +// return null; +// } +// } public enum ClientMessageType{ //瀹㈡埛绔績璺 @@ -92,7 +102,9 @@ public class MessageConstant { //瀹㈡埛绔敹鍒版秷鎭疉CK Ack(0x02), //瀹㈡埛绔姹傝繛鎺ョ姸鎬 - ChannelStatus(0x03); + ChannelStatus(0x03), + // 鏈璇 + UnAuth(0x04); //鎾ら攢鏌愪釜娑堟伅 //DelMessage(0x04), //瀹㈡埛绔姹傝繛鎺ョ姸鎬 diff --git a/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/server/UnAuthMessage.java b/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/server/UnAuthMessage.java new file mode 100644 index 0000000..2df971b --- /dev/null +++ b/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/server/UnAuthMessage.java @@ -0,0 +1,15 @@ +package com.ccsens.ccmq.lowlevel.message.server; + +import com.ccsens.ccmq.lowlevel.message.common.MessageConstant; +import com.ccsens.ccmq.lowlevel.message.common.ServerMessage; +import lombok.Data; + +/** + * @author zhangsan + */ +@Data +public class UnAuthMessage extends ServerMessage { + public UnAuthMessage(){ + setType(MessageConstant.ServerMessageType.UnAuth.name()); + } +} diff --git a/ccmq/src/main/java/wiki/tall/ccmq/common/TallMessageApplication.java b/ccmq/src/main/java/wiki/tall/ccmq/common/TallMessageApplication.java index 366c907..9dd11db 100644 --- a/ccmq/src/main/java/wiki/tall/ccmq/common/TallMessageApplication.java +++ b/ccmq/src/main/java/wiki/tall/ccmq/common/TallMessageApplication.java @@ -58,8 +58,8 @@ public class TallMessageApplication implements CommandLineRunner { nettyWsServer.start(); nettyMBServer.start(); nettyTextServer.start(); - for(int i=0;i<1;i++) { - messageHandler.loopSendMessage(); - } +// for(int i=0;i<1;i++) { +// messageHandler.loopSendMessage(); +// } } } diff --git a/ccmq/src/main/java/wiki/tall/ccmq/common/bean/dto/ccmodbus/CCModBusEntity.java b/ccmq/src/main/java/wiki/tall/ccmq/common/bean/dto/ccmodbus/CCModBusEntity.java index 58e4285..92cecd0 100644 --- a/ccmq/src/main/java/wiki/tall/ccmq/common/bean/dto/ccmodbus/CCModBusEntity.java +++ b/ccmq/src/main/java/wiki/tall/ccmq/common/bean/dto/ccmodbus/CCModBusEntity.java @@ -6,6 +6,7 @@ import io.netty.buffer.ByteBuf; /** * format: Filter(2) len(1) addr(1) oper(1) data(x) crc(2) + * 鎺堟潈data: major(1) minor(1) authId(闀垮害鐢辫澶囧喅瀹氾紝娑堟伅绯荤粺浠ong鎺ユ敹) * eg: FF FE 0A 10 93 00 00 00 00 00 00 94 2A * Notice: crc is example ,not the real data */ @@ -20,10 +21,18 @@ public class CCModBusEntity { ERROR_NEED_MORE_DATA } + /** + * 鎿嶄綔绫诲瀷 + */ public static class Oper{ + public static final byte AUTH = (byte) 0X90 ; + public static final byte UN_AUTH = (byte) 0X91 ; + public static final byte PING = (byte) 0X92; + public static final byte PONG = (byte) 0X93; public final static byte READ = 0X03; public final static byte WRITE = 0X06; public final static byte WRITE_MORE = 0X10; + } public static final int SIZE_FILTER = 2; @@ -37,8 +46,10 @@ public class CCModBusEntity { public static final int SIZE_DATA_SINGLE = 2; public static final int SIZE_DATA_MIN = 1; public static final int SIZE_MAX = 255; + public static final int SIZE_MAJOR = 1; + public static final int SIZE_MINOR = 1; public static final int SIZE_DATA_MAX = SIZE_MAX - SIZE_ADDR - SIZE_OPER - SIZE_CRC - SIZE_FILTER - SIZE_LEN; - public static final int SIZE_MIN = SIZE_FILTER + SIZE_LEN + SIZE_ADDR + SIZE_OPER + SIZE_DATA_MIN + SIZE_CRC; + public static final int SIZE_MIN = SIZE_FILTER + SIZE_LEN + SIZE_ADDR + SIZE_OPER + SIZE_CRC; public static final byte ADDRESS = 0x14; public static final int POSITION_DATA = SIZE_FILTER + SIZE_LEN + SIZE_ADDR + SIZE_OPER + SIZE_REGISTER_START + SIZE_REGISTER_NUM + SIZE_COUNT_LENGTH; public static final int POSITION_OPER = SIZE_FILTER + SIZE_LEN + SIZE_ADDR; @@ -168,14 +179,24 @@ public class CCModBusEntity { return originData; } + /** + * 鑾峰彇鍐欐搷浣滃悗闈㈢殑鍐呭 + * @return + */ public byte[] getValue(){ getOriginData(); - byte[] values; - if (oper == Oper.WRITE_MORE) { - // TODO 鍐欏涓瘎瀛樺櫒 + byte[] values = null; + byte oper = getOper(); + if (oper == Oper.AUTH) { + // 鎺堟潈 major(1) minor(1) authId(闀垮害鐢辫澶囧喅瀹氾紝娑堟伅绯荤粺浠ong鎺ユ敹) + int length = getLen() - SIZE_ADDR - SIZE_OPER - SIZE_CRC; + values = new byte[length]; + System.arraycopy(originData, 0, values, 0, length); + } else if (oper == Oper.WRITE_MORE) { + // 鍐欏涓瘎瀛樺櫒 values = new byte[originData[SIZE_REGISTER_START + SIZE_REGISTER_NUM]]; System.arraycopy(originData, SIZE_REGISTER_START + SIZE_REGISTER_NUM + CCModBusEntity.SIZE_COUNT_LENGTH, values, 0, values.length); - } else { + } else if (oper == Oper.WRITE){ // 鍐欎竴涓瘎瀛樺櫒 values = new byte[SIZE_DATA_SINGLE]; System.arraycopy(originData, SIZE_REGISTER_START, values, 0, CCModBusEntity.SIZE_DATA_SINGLE); diff --git a/ccmq/src/main/java/wiki/tall/ccmq/common/bean/dto/ccmodbus/Register.java b/ccmq/src/main/java/wiki/tall/ccmq/common/bean/dto/ccmodbus/Register.java index bc653a8..cf693b2 100644 --- a/ccmq/src/main/java/wiki/tall/ccmq/common/bean/dto/ccmodbus/Register.java +++ b/ccmq/src/main/java/wiki/tall/ccmq/common/bean/dto/ccmodbus/Register.java @@ -1,5 +1,6 @@ package wiki.tall.ccmq.common.bean.dto.ccmodbus; +import com.rabbitmq.client.impl.ClientVersion; import lombok.Data; /** @@ -14,6 +15,7 @@ public class Register { * 骞宠溅缂栧彿 */ private Long authId; + private String version; /** * 瀵勫瓨鍣ㄥ湴鍧 */ diff --git a/ccmq/src/main/java/wiki/tall/ccmq/common/config/RedisConfig.java b/ccmq/src/main/java/wiki/tall/ccmq/common/config/RedisConfig.java index 6ee0f00..c929252 100644 --- a/ccmq/src/main/java/wiki/tall/ccmq/common/config/RedisConfig.java +++ b/ccmq/src/main/java/wiki/tall/ccmq/common/config/RedisConfig.java @@ -31,8 +31,10 @@ public class RedisConfig { template.setHashKeySerializer(stringRedisSerializer); // value搴忓垪鍖栨柟寮忛噰鐢╦ackson template.setValueSerializer(jackson2JsonRedisSerializer); - // hash鐨剉alue搴忓垪鍖栨柟寮忛噰鐢╦ackson - template.setHashValueSerializer(jackson2JsonRedisSerializer); +// // hash鐨剉alue搴忓垪鍖栨柟寮忛噰鐢╦ackson +// template.setHashValueSerializer(jackson2JsonRedisSerializer); + // hash鐨剉alue搴忓垪鍖栨柟寮忛噰鐢⊿tring + template.setHashValueSerializer(stringRedisSerializer); template.afterPropertiesSet(); return template; } diff --git a/ccmq/src/main/resources/application-dev.properties b/ccmq/src/main/resources/application-dev.properties index 535de6d..c12dc54 100644 --- a/ccmq/src/main/resources/application-dev.properties +++ b/ccmq/src/main/resources/application-dev.properties @@ -21,7 +21,8 @@ spring.redis.jedis.pool.min-idle=0 # RabbitMQ配置信息 #spring.rabbitmq.host=49.233.89.188 -spring.rabbitmq.host=192.168.0.99 +#spring.rabbitmq.host=192.168.0.99 +spring.rabbitmq.host=www.tall.wiki spring.rabbitmq.port=5672 spring.rabbitmq.username=admin spring.rabbitmq.password=111111 diff --git a/ccmq/src/main/resources/application-test.properties b/ccmq/src/main/resources/application-test.properties index 5c41288..455198f 100644 --- a/ccmq/src/main/resources/application-test.properties +++ b/ccmq/src/main/resources/application-test.properties @@ -28,9 +28,30 @@ spring.rabbitmq.password=111111 # MongoDB配置信息 spring.data.mongodb.uri=mongodb://wei:111111@49.233.89.188:27017/test +# 最大连接数,每一台服务器 +spring.data.mongodb.option.max-connection-per-host=100 +# 可阻塞线程队列容量 +spring.data.mongodb.option.threads-allowed-to-block-for-connection-multiplier=10 +# 每一台服务器的最小连接数 +spring.data.mongodb.option.min-connection-per-host=1 + +#连接超时时间 1分钟 +spring.data.mongodb.option.connect-timeout=60000 +#等待时间 120000 2 * 60 * 1000 +spring.data.mongodb.option.max-wait-time=120000 +#Socket超时时间 +spring.data.mongodb.option.socket-timeout=10000 +#保持连接 spring.data.mongodb.option.socket-keep-alive=true -spring.data.mongodb.option.socket-timeout=5000 -spring.data.mongodb.option.max-connection-idle-time=10000 + +## 连接空闲时间8小时,否则连接太过频繁 +spring.data.mongodb.option.max-connection-idle-time=28800000 +spring.data.mongodb.option.max-connection-life-time=0 +#心跳 +spring.data.mongodb.option.heartbeat-socket-timeout=10000 +spring.data.mongodb.option.heartbeat-connect-timeout=15000 +spring.data.mongodb.option.min-heartbeat-frequency=5000 +spring.data.mongodb.option.heartbeat-frequency=100000 # Settings setting.snowflake.workerId=1 diff --git a/ccmq/src/main/resources/application.properties b/ccmq/src/main/resources/application.properties index 97e42eb..dd8b329 100644 --- a/ccmq/src/main/resources/application.properties +++ b/ccmq/src/main/resources/application.properties @@ -1,5 +1,5 @@ # 选择开发环境{dev|test|prod} -spring.profiles.active=prod +spring.profiles.active=test # 设置应用名 spring.application.name=tall-message From eee5c0f915c9b37fe8159c7601a0c804c91a7169 Mon Sep 17 00:00:00 2001 From: zhizhi wu <2377881365@qq.com> Date: Tue, 19 Jan 2021 14:31:43 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E5=AF=84=E5=AD=98?= =?UTF-8?q?=E5=99=A8=3D01=E4=B8=BA=E6=8E=88=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../netty/tcphexserver/ModbusConverter.java | 32 +++++++++ .../lowlevel/message/client/AuthMessage.java | 6 ++ .../message/common/MessageConstant.java | 66 +++++++++---------- .../ccmq/common/TallMessageApplication.java | 6 +- 4 files changed, 74 insertions(+), 36 deletions(-) diff --git a/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/client/netty/tcphexserver/ModbusConverter.java b/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/client/netty/tcphexserver/ModbusConverter.java index 0daffea..8bf2dad 100644 --- a/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/client/netty/tcphexserver/ModbusConverter.java +++ b/ccmq/src/main/java/com/ccsens/ccmq/lowlevel/client/netty/tcphexserver/ModbusConverter.java @@ -44,6 +44,13 @@ public class ModbusConverter { break; } default:{ + // TODO 鍏煎鏅烘収骞宠溅鏃х増鏈殑鎺堟潈鎿嶄綔锛屾櫤鎱у钩杞︿慨鏀瑰悗锛屽嵆鍙垹闄ゆif璇彞 + MessageConstant.Register type = MessageConstant.Register.valueOf(data[0], data[1] ); + if (type == MessageConstant.Register.Auth) { + message = toOldAuthMessage(register,ccModBusEntity.getValue()); + return message; + } + // 璇诲啓鎿嶄綔 message = new InMessage(); message.setData(JacksonUtil.beanToJson(new ModBusMessage(ccModBusEntity.getAddr(), register,oper,ccModBusEntity.getModbusData()))); @@ -115,6 +122,31 @@ public class ModbusConverter { return inMessage; } + /** + * OriginaData ==> 0x00 0x00 0x00 0x64 + * 鎺堟潈 + * @param register 涓氬姟绫诲瀷 + * @param values 鎺堟潈鏁版嵁 涓荤増鏈 娆$増鏈 鎺堟潈ID + * @return + */ + private static InMessage toOldAuthMessage(short register, byte[] values) throws JsonProcessingException { + + if (values == null || values.length < 1) { + return null; + } + long userId = 0; + for(int i=0;i