From e80c83a40598789b2947c9590f8f870278a345df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9E=97?= <1049020282@qq.com> Date: Mon, 30 Oct 2023 14:31:34 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BD=91=E5=85=B3=E7=86=94=E6=96=ADrabbitmq?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filter/logging/RabbitRecorder.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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 64fe600..6b68ce8 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; + } } } -- Gitee