Commit 5281733a LN

增加重复消息过滤

1 个父辈 96a5c610
......@@ -31,6 +31,20 @@ public class Message extends BasePo implements Serializable {
Message message=new Message(deviceName,deviceId,module, type,msgCode,msg,msgParams,null,null,"",errorCode);
return message;
}
public boolean sameMas(Message msg){
if(deviceName.equals(msg.getDeviceName())
&&deviceId.equals(msg.getDeviceId())
&&module.equals(msg.getModule())
&&type.equals(msg.getType())
&&getMsg().equals(msg.getMsg())
&&errorCode.equals(msg.getErrorCode())
){
return true;
}
return false;
}
/**
* 设备名称
*/
......
......@@ -18,6 +18,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.aggregation.ComparisonOperators;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Slf4j
@Component
public class DeviceMessageUtil {
......@@ -73,6 +77,37 @@ public class DeviceMessageUtil {
return null;
}
private static List<Message> messageList=new ArrayList<>();
private synchronized static boolean msgNeedSave(Message message) {
int TimeOutMs = 20000;
boolean needSave = true;
if (messageList == null) {
messageList = new ArrayList<>();
}
List<Message> oldMsg = new ArrayList<>();
oldMsg.addAll(messageList);
messageList = new ArrayList<>();
message.setCreateDate(new Date());
for (Message msg :
oldMsg) {
long ms = (new Date()).getTime() - msg.getCreateDate().getTime();
if (ms < TimeOutMs) {
if (msg.sameMas(message)) {
needSave = false;
messageList.add(message);
} else {
messageList.add(msg);
}
}
}
if(needSave){
messageList.add(message);
}
return needSave;
}
public static void addDeviceMessage(String cid,String msgType, String moudle, String msgCode, String msg, String[] msgParam,String errorCode) {
DeviceInfo deviceInfo=getDeviceName(cid);
......@@ -84,7 +119,10 @@ public class DeviceMessageUtil {
}
}
Message message=Message.newMsg(msgType ,deviceInfo.getName(), deviceInfo.getId(), moudle, code,msg,msgParam,errorCode);
messageManager.save(message);
boolean result=msgNeedSave(message);
if(result){
messageManager.save(message);
}
}
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!