gpt4 book ai didi

docker - docker/微服务中的 RabbitMQ 监听器

转载 作者:行者123 更新时间:2023-12-02 00:54:41 24 4
gpt4 key购买 nike

我已经在 aws ecs 中部署了一些微服务(通过 CI/CD 通过 jenkins)每个任务都有自己的服务和任务定义。 Apache 在前台运行,如果 apache 崩溃,docker 将从其服务中部署。

我的开发团队正在使用 RabbitMQ 在微服务之间进行通信。很少有微服务需要监听 RabbitMQ 服务器中的特定事件(Rabbit 安装在单独的 news ec2 实例上)

为了监听 rabbit MQ 服务器,我们应该将监听器作为守护进程运行吗?开发团队要求在部署 docker 时运行以下代码,以便它可以监听 rabbit mq 服务器。

php /app/public/yii queue/listen

并设置一个 cron 作业,以便监听器在崩溃时启动。据我所知,docker 容器只能在前台运行一个进程,目前,Apache 在前台运行。如果我尝试在后台运行守护进程(cron 和 rabbit mq 监听器),当这些守护进程中的任何一个崩溃时,docker 容器都不会重新启动。

对于这种情况,是否有更安全的方法?在 docker 容器中运行 rabbit mq listener 的最佳实践是什么?

最佳答案

如果您的问题是在一个容器中运行更多进程,一个更通用的概念是创建一个脚本,例如。 start_service.sh 在你的容器中,并在你的 docker 文件的 CMD 指令中执行它。像这样:

#!/bin/bash  
process1 ... &
process2 ... &
daemon-process1

sleep infinite

& 将使脚本在后台启动进程后继续运行,即使它的目的不是作为守护进程运行。最后的 sleep infinite 将阻止脚本退出,这将退出容器。

如果您在容器中运行多个进程,请考虑在容器中使用像 dumb-init 这样的“init”进程。在这里阅读更多 https://github.com/Yelp/dumb-init/blob/master/README.md

关于docker - docker/微服务中的 RabbitMQ 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55158327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com