package com.zy.core.utils;
|
|
import com.zy.asrs.entity.DeviceDataLog;
|
import com.zy.core.enums.RedisKeyType;
|
import com.zy.core.enums.SlaveType;
|
|
public class DeviceLogRedisKeyBuilder {
|
|
public static String build(DeviceDataLog deviceDataLog) {
|
String type = deviceDataLog == null || deviceDataLog.getType() == null
|
? "unknown"
|
: deviceDataLog.getType();
|
String deviceNo = deviceDataLog == null || deviceDataLog.getDeviceNo() == null
|
? "unknown"
|
: String.valueOf(deviceDataLog.getDeviceNo());
|
String stationPart = buildStationPart(deviceDataLog, type);
|
// 日志发布器按 lane 只保留最新快照,Redis key 必须稳定,否则会把每次采样都堆成独立 key,
|
// 让 DeviceLogScheduler 的消费速度永远追不上写入速度,最终把 Redis 内存打爆。
|
return RedisKeyType.DEVICE_LOG_KEY.key + type + ":" + deviceNo + stationPart;
|
}
|
|
private static String buildStationPart(DeviceDataLog deviceDataLog, String type) {
|
if (!String.valueOf(SlaveType.Devp).equals(type)) {
|
return "";
|
}
|
Integer stationId = deviceDataLog == null ? null : deviceDataLog.getStationId();
|
return stationId == null ? ":station:unknown" : ":station:" + stationId;
|
}
|
}
|