AMQP Appender待处理邮件计数

时间:2017-08-02 08:17:35

标签: spring rabbitmq spring-amqp

我们正在向RabbitMQ群集发送审核日志消息,由于我们无法影响的原因,它有时无法使用。

当队列不可用时,日志消息开始在本地累积,最终我们在客户端上获得了内存不足。

我们正在使用AMQP Appender提交邮件。

有没有办法可以查询待处理日志消息的数量,并在消息开始累加时发出警报?

1 个答案:

答案 0 :(得分:1)

嗯,这是不可能的。没有任何钩子可以做到这一点。

但是,您可以考虑将maxSenderRetries从默认30减少到12。之后,您将开始丢失日志消息:

int retries = event.incrementRetries();
if (retries < AmqpAppender.this.maxSenderRetries) {
    // Schedule a retry based on the number of times I've tried to re-send this
    AmqpAppender.this.retryTimer.schedule(new TimerTask() {
            @Override
            public void run() {
                AmqpAppender.this.events.add(event);
            }
        }, (long) (Math.pow(retries, Math.log(retries)) * 1000));
}
else {
    addError("Could not send log message " + logEvent.getMessage()
                + " after " + AmqpAppender.this.maxSenderRetries + " retries", e);
}

我们可能需要公开queueSize选项而不是默认选项:

public LinkedBlockingQueue() {
    this(Integer.MAX_VALUE);
}

随意就此问题提出JIRA