如何确保我与RabbitMQ的应用程序连接是健康的

时间:2016-05-15 10:09:01

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

我需要将keepalive端点设置为web应用程序(tomcat war)。 我的WAF将定期对终点进行采样,以确保应用程序健康。

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

我将向我的WAF打开一些REST API,以验证连接状态。
阅读文档我很失落如何实现这个功能 我注意到一些可能有用的功能,但我不确定:

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

1 个答案:

答案 0 :(得分:3)

您不需要像铲子那样特殊的东西来实施健康检查。只需创建一个健康队列并发送/接收它。

如果您使用的是Spring AMQP

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

此外,您可以在Spring AMQP的连接工厂注册ConnectionListener,并在创建/关闭连接时通知您。

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

如果您没有使用Spring AMQP,请在频道上使用basicPublishbasicGet来发送/接收健康队列。