Очередь PHP скриптов в RabbitMQ - PullRequest
1 голос
/ 10 января 2020

Я пытаюсь использовать RabbitMQ в PHP для запуска около 40 сценариев подряд. То, что у меня пока есть, это своего рода работа, но не совсем так, как я хочу.

Один PHP сценарий (который в конечном итоге планируется запустить ночью) отправляет серию сообщений в очередь , как показано ниже:

php public_html/worker/mis-update-school.php 9195408 1
php public_html/worker/mis-update-school.php 8954001 1
php public_html/worker/mis-update-school.php 3424051 1

Затем они получаются потребителем и выполняются следующим образом:

public function action($msg)
        {
            $message = $msg->body ;

            shell_exec($message);
        }

Это работает, так как ожидает выполнения каждого сценария до следующий начинается. Однако, похоже, что это делает PHP, а не RabbitMQ. Кажется, что все сообщения Rabbit MQ потребляются в одно и то же время.

Как я могу сказать RabbitMQ дождаться завершения shell_exec() до обработки следующего сообщения?

Причина этого важно то, что в периоды занятости я хотел бы иметь возможность добавлять больше dyno в очередь для запуска более чем одного из сценариев одновременно. В настоящее время это невозможно, поскольку все сценарии немедленно извлекаются из очереди.

Есть идеи?

1 Ответ

0 голосов
/ 11 января 2020

Кажется, я решил это сам, просто добавив строку после shell_exec() в функции action($msg).

public function action($msg)
        {
            $message = $msg->body ;

            shell_exec($message);

            send_remote_syslog("Job complete: $message", "mis-update-queue");

        }

Мне было бы интересно узнать, почему это так .. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...