Centos 7中如何使用rabbitmq永久消费消息?

In Centos 7, how do you permanently consume messages with rabbitmq?

美好的一天,

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

在我安装的应用程序中:

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

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

更新:

我使用以下命令实现了我想要的情况:

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

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;

  • 如果有一种“官方”方式,那么您应该改为采用官方方式,不幸的是我对此一无所知。