【问题标题】:In Centos 7, how do you permanently consume messages with rabbitmq?在 Centos 7 中,如何使用 rabbitmq 永久消费消息?
【发布时间】:2022-01-26 15:18:01
【问题描述】:

早安,

我刚刚将 Symfony 3.4 项目 (PHP 7.2) 上传到 Centos 服务器,我的应用程序需要连接到 RabbitMQ。我想在 Centos 服务器中这样做,rabbitmq 不断消耗消息。我知道如何通过运行以下命令临时使用这些消息: bin/console rabbitmq:consumer messaging 。但是我怎么能永久地使用服务器上的消息呢?我试图谷歌但没有找到任何有用的信息

在我安装的应用程序中:

"php-amqplib/php-amqplib": "*",

"php-amqplib/rabbitmq-bundle": "*"

更新:

我通过以下命令实现了我想要的情况:

nohup bin/console rabbitmq:consumer <your-consumer> &

【问题讨论】:

  • 虽然重启后无法存活,但我猜你基本上永远不会重启你的服务器?你的服务器的uptime 是什么?

标签: rabbitmq centos7 symfony-3.4 php-7.2


【解决方案1】:

idk 如果有“官方”的方式来做这件事,但与 Linux 中的任何事情一样,您只需编写一个小守护程序来执行此操作,最简单的示例是将其添加到您的 crontab -e

@reboot /bin/bash /project/folder/cronjob_starter.sh

包含 cronjob_starter.sh

#!/bin/bash

if [[  $(screen -ls | grep rabbitmq_daemon) ]]
        then
                echo "rabbitmq_daemon already running!"
                /bin/true
        else
                # echo " rabbitmq_daemon not running!"
                screen -S rabbitmq_daemon -dm
                # workaround for https://savannah.gnu.org/bugs/index.php?54164
                sleep 1
                screen -S rabbitmq_daemon -X stuff "cd /project/folder; bin/console rabbitmq:consumer messaging^M"
fi

然后您可以使用 screen -xS rabbitmq_daemon 或 Screenie 应用程序检查您的守护程序(老实说,我知道如何在 CentOS 上“正确”安装 Screenie,我只是运行 curl https://gist.githubusercontent.com/divinity76/1a583968c997869b27a5ee2c1ed24259/raw/76453e61a92676386589fbb3f4ef0225ac98fb19/screenie.b64 | base64 -d | sudo tee /usr/local/bin/screenie ; sudo chmod 0555 /usr/local/bin/screenie;

  • 如果有“官方”的方式来做这件事,你可能应该用官方的方式来代替,不幸的是我对此一无所知。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 2020-09-20
    • 2012-10-08
    • 2020-04-20
    • 2017-11-13
    • 2023-03-29
    • 2015-09-27
    相关资源
    最近更新 更多