diff --git a/src/main/java/cn/lihongjie/coal/dataCollector/listener/WeightListener.java b/src/main/java/cn/lihongjie/coal/dataCollector/listener/WeightListener.java index 3830315a..730abbed 100644 --- a/src/main/java/cn/lihongjie/coal/dataCollector/listener/WeightListener.java +++ b/src/main/java/cn/lihongjie/coal/dataCollector/listener/WeightListener.java @@ -25,12 +25,15 @@ import jakarta.persistence.criteria.CriteriaQuery; import jakarta.persistence.criteria.Predicate; import jakarta.persistence.criteria.Root; +import lombok.Cleanup; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.HmacAlgorithms; import org.apache.commons.codec.digest.HmacUtils; import org.apache.commons.lang3.StringUtils; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.Exchange; import org.springframework.amqp.rabbit.annotation.QueueBinding; @@ -69,6 +72,8 @@ public class WeightListener { @Autowired ConversionService conversionService; + @Autowired RedissonClient redissonClient; + @SneakyThrows @RabbitListener( bindings = { @@ -130,6 +135,12 @@ public class WeightListener { var device = devices.get(0); + + @Cleanup("unlock") RLock lock = redissonClient.getLock("weightListener." + device.getId()); + + lock.lock(); + + JsonNode jsonNode = objectMapper.readTree(body); DataCollectorLogEntity logEntity = new DataCollectorLogEntity();