Влияет ли количество процессов на последовательное выполнение Messenger? - PullRequest
1 голос
/ 27 марта 2020

У нас есть простой вариант использования: нам нужно последовательно использовать сообщения в очереди (сообщение № 1 завершает выполнение до того, как сообщение № 2 начинает выполнение).

Рекомендуемая конфигурация супервизора в Symfony Документация:

;/etc/supervisor/conf.d/messenger-worker.conf
[program:messenger-consume]
command=php /path/to/your/app/bin/console messenger:consume async --time-limit=3600
user=ubuntu
numprocs=2
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)02d

Означает ли numprocs=2, что 2 рабочих будут использовать сообщения «одновременно», то есть рабочий 2 начнет выполнение сообщения № 2 до того, как сообщение # 1 будет завершено?

Если да, есть ли способ сохранить 2 рабочих (если нам нужно одновременное выполнение для какого-то другого типа сообщений) и при этом все равно сообщения этого типа c будут выполняться последовательно?

1 Ответ

2 голосов
/ 27 марта 2020

Если вам нужно обрабатывать сообщения в строгой последовательности, какое преимущество вы получите от наличия нескольких пользовательских процессов?

Процесс 2 всегда должен ждать от 1 до конечного sh ... по сути не более одного процесса будет выполняться одновременно. Независимо от того, сколько процессов вы используете, преимущества параллелизма не будут получены, поскольку они будут эффективно блокировать друг друга.

Если вам нужно обрабатывать сообщения очереди в строгой последовательности, просто используйте один процесс-потребитель.

...