如何检查rabbitMQ连接(健康检查)是否正常?

问题描述 投票:0回答:2

我正在使用 docker 运行 4 个微服务。这里一项服务依赖于其他服务。这就是为什么我需要在使用任何服务之前检查其他服务是否正常?

为了启动所有服务,我正在编写一个 bash 脚本。 出于我的工作目的,我正在使用

sleep 
直到正确启动rabbitmq。

检查rabbitmq是否启动的更好解决方案是什么?直到rabbitmq不起来我还得等。 现在为了我的工作目的,我正在使用这样的 -

# wait for rabbitmq container be ready 
sleep 14

这是rabbitMQ的docker-compose容器

rabbitmq:
image: 'rabbitmq:3.8.9'
container_name: rabbitmq_dev
restart: always
ports:
  - 5675:5672
environment:
  - RABBITMQ_DEFAULT_USER=rabbit
  - RABBITMQ_DEFAULT_PASS=pass
depends_on:
  - consul
networks:
  - my_networks
bash docker rabbitmq
2个回答
1
投票

我认为HealthCheck可以解决您的问题。

参考链接:Docker Compose 在启动 Y 之前等待容器 X


0
投票

通过 docker compose 结合使用

healthcheck
depends_on
,有一种干净、直接的方法可以实现这一点。如下面的代码片段所示:

rabbitmq:
  image: rabbitmq:latest
  container_name: rabbitmq_dev
  restart: always
  ports:
    - 5675:5672
  environment:
    - RABBITMQ_DEFAULT_USER=rabbit
    - RABBITMQ_DEFAULT_PASS=pass
  depends_on:
    - consul
  networks:
    - my_networks
  healthcheck:
    test: rabbitmq-diagnostics -q ping
    interval: 30s
    timeout: 10s
    retries: 5
    start_period: 10s

并且在其他服务中您需要添加

depends_on

  your_app:
    ...
    depends_on:
        rabbitmq:
            condition: service_healthy
© www.soinside.com 2019 - 2024. All rights reserved.