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