我已经使用spring-boot编写了RabbitMq侦听器应用程序,并且想知道其状态是正在处理消息还是处于空闲状态。
我遍历了RabbitMq HTTP API文档,发现 / api / queues / vhost / name / get 端点提供了消息计数和消息正文。我看到了一个机会,决定比较两个连续响应的消息计数和消息正文。如果两个响应都相同,则侦听器处于空闲状态,否则它将进行处理。
我将RestTemplate的postForEntity()与{“ count”:1,“ requeue”:true,“ encoding”:“ auto”}一起用作请求正文。但是奇怪的是,rabbitmq-server没有响应此API,但是响应了文档中的其他API端点。
如果有任何方法可以获取侦听器的状态,请共享详细信息。预先感谢。
答案 0 :(得分:0)
当在一定时间间隔内没有消息时,Spring AMQP侦听器容器将发出ListenerContainerIdleEvent
对象。
有关更多信息,请参阅文档:https://docs.spring.io/spring-amqp/docs/2.1.7.RELEASE/reference/html/#idle-containers
对于RabbitMQ REST API,有一个Java包装器-Hop
:https://github.com/rabbitmq/hop
因此,如果Client.getQueue(String vhost, String name)
不符合您的要求,请考虑使用其ListenerContainerIdleEvent
作为目标。