【问题标题】:How to make sure that my Application connection to RabbitMQ is healthy?如何确保我的应用程序与 RabbitMQ 的连接是健康的?
【发布时间】:2016-09-11 05:49:15
【问题描述】:

我需要为我的 Web 应用程序(tomcat 战争)设置一个 keepalive 端点。 我的 WAF 会定期对端点进行采样,以确保应用程序健康。

一个健康的应用程序意味着应用程序已启动并且与 RabbitMQ 服务器(版本 3.5.3 /spring-rabbit 1.4.5)的通信已启动且正常运行。

我将向我的 WAF 打开一些 REST API,以验证连接状态。
阅读文档我对如何在功能上实现这一点很迷茫
我注意到一些可能有帮助的功能,但我不确定:

  1. 启用自动恢复并使用RecoveryListener 并确保上次恢复没有失败。
  2. 配置HeartBeat 并找出一种在“连接中断”时收到通知的方法
  3. 创建一些健康队列并使用像Shovel 这样的插件来回显消息,如果我没有得到任何响应,我认为队列已关闭

【问题讨论】:

    标签: java spring rabbitmq spring-rabbit rabbitmq-shovel


    【解决方案1】:

    您不需要像铲子这样的特殊工具来实施健康检查。只需创建一个运行状况队列并向其发送/接收。

    如果你使用的是 Spring AMQP

    rabbitTemplate.send("", "healthQueue", "foo");
    String foo = rabbitTemplate.receive("healthQueue");
    

    另外,你可以向 Spring AMQP 的连接工厂注册一个ConnectionListener,当连接创建/关闭时你会收到通知。

    Spring AMQP 从一开始就进行了连接恢复,因此不使用 rabbitmq 客户端中的(相对较新的)内置自动恢复。

    如果您不使用 Spring AMQP,请在通道上使用 basicPublishbasicGet 以向/从健康队列发送/接收。

    【讨论】:

    • 仅仅使用 Spring Boot 中的org.springframework.boot.actuate.health.RabbitHealthIndicator 或者至少在非引导项目中使用相同的方法还不够吗?
    • 是的,这也可以,以验证连接是否仍然良好。发送/接收消息会更深一层。
    猜你喜欢
    • 1970-01-01
    • 2016-10-28
    • 2018-11-15
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多