有什么办法可以找到RabbitMq消费者/监听者的状态

时间:2019-07-18 12:19:47

标签: spring-boot rabbitmq spring-amqp

我已经使用spring-boot编写了RabbitMq侦听器应用程序,并且想知道其状态是正在处理消息还是处于空闲状态。

我遍历了RabbitMq HTTP API文档,发现 / api / queues / vhost / name / get 端点提供了消息计数和消息正文。我看到了一个机会,决定比较两个连续响应的消息计数和消息正文。如果两个响应都相同,则侦听器处于空闲状态,否则它将进行处理。

我将RestTemplate的postForEntity()与{“ count”:1,“ requeue”:true,“ encoding”:“ auto”}一起用作请求正文。但是奇怪的是,rabbitmq-server没有响应此API,但是响应了文档中的其他API端点。

如果有任何方法可以获取侦听器的状态,请共享详细信息。预先感谢。

1 个答案:

答案 0 :(得分:0)

当在一定时间间隔内没有消息时,Spring AMQP侦听器容器将发出ListenerContainerIdleEvent对象。

有关更多信息,请参阅文档:https://docs.spring.io/spring-amqp/docs/2.1.7.RELEASE/reference/html/#idle-containers

对于RabbitMQ REST API,有一个Java包装器-Hophttps://github.com/rabbitmq/hop

因此,如果Client.getQueue(String vhost, String name)不符合您的要求,请考虑使用其ListenerContainerIdleEvent作为目标。