Spring AMQP 报告

Spring AMQP Reporting

我们正在使用 spring AMQP 来监听 rabbitMQ 的消息。我希望能够在处理完一批消息后报告指标,这意味着当我们耗尽队列中的所有消息时。我不确定如何在 Spring AMQP 中做到这一点。浏览 spring 文档,它提到了到 SimpleRabbitListenerContainerFactory 的建议链,但这主要是针对 RetryInterceptor。反正有没有让我报告?

框架中没有任何内容可以通知侦听器没有可用的新消息。

您可以使用 rabbitadmin 检查队列以查看消息计数,但在每次传递消息时都这样做会很昂贵。

一些想法:

您可以将任务安排到 运行 一段时间后没有收到任何消息(并且 cancel/reschedule 每次收到新消息时)。

您可以让发送系统向 "last" 消息添加一个标记,以便接收方知道批处理已完成。

不使用消息侦听器容器,而是使用 RabbitTemplate.receive()(或 receiveAndConvert()),默认情况下,当队列中没有消息时,returns null .循环调用它们,直到没有消息为止。发生这种情况时,发布您的报告,然后进入轮询循环(睡眠)以轮询下一个 "batch".