diff --git a/seqdata-cloud-gateway/src/main/java/cn/seqdata/gateway/filter/logging/RabbitRecorder.java b/seqdata-cloud-gateway/src/main/java/cn/seqdata/gateway/filter/logging/RabbitRecorder.java index 64fe600134fda7d67efa5f0e73fc7c39488abe76..6b68ce822c682ef1a210f783af7be72972942d3d 100644 --- a/seqdata-cloud-gateway/src/main/java/cn/seqdata/gateway/filter/logging/RabbitRecorder.java +++ b/seqdata-cloud-gateway/src/main/java/cn/seqdata/gateway/filter/logging/RabbitRecorder.java @@ -1,20 +1,37 @@ package cn.seqdata.gateway.filter.logging; +import lombok.extern.slf4j.Slf4j; + +import org.springframework.amqp.AmqpException; import org.springframework.amqp.rabbit.core.RabbitTemplate; /** * Author: jrxian * Date: 2020-02-15 02:22 */ +@Slf4j public class RabbitRecorder implements LogRecorder { private final RabbitTemplate rabbitTemplate; + /** + * ts < now时,认为mq正常 + */ + private volatile long ts; public RabbitRecorder(RabbitTemplate rabbitTemplate) { this.rabbitTemplate = rabbitTemplate; + ts = System.currentTimeMillis() - 1000; } @Override public void accept(T record) { - rabbitTemplate.convertAndSend(record); + if(ts > System.currentTimeMillis()) { + return; + } + try { + rabbitTemplate.convertAndSend(record); + } catch(AmqpException e) { + log.error("rabbitmq send error:{}, hystrix 1 hour", e.getMessage()); + ts = System.currentTimeMillis() + 3600000; + } } }