【问题标题】:Is there any way to find the status of RabbitMq consumer/listener有没有办法找到 RabbitMq 消费者/听众的状态
【发布时间】:2019-07-18 12:19:47
【问题描述】:

我使用 spring-boot 编写了一个 RabbitMq 侦听器应用程序,想知道它是在处理消息还是空闲状态。

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

我使用 RestTemplate 的 postForEntity() 和 {"count":1,"requeue":true,"encoding":"auto"} 作为请求正文。但奇怪的是,rabbitmq-server 没有响应此 API,而是响应文档中的其他 API 端点。

如果有任何方法可以获取监听器的状态,请分享详细信息。提前致谢。

【问题讨论】:

  • 你应该在 rabbitmq-users google 组中问这样的问题。 RabbitMQ 工程师不常看这里,但他们会积极监控该组。

标签: spring-boot rabbitmq spring-amqp


【解决方案1】:

当在某个时间间隔内没有消息时,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

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

【讨论】:

    猜你喜欢
    • 2020-09-20
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    相关资源
    最近更新 更多