базы, генерация pdf, отправка на почту - то на каждое действие у меня будет отдельный файл с кодом для консьюмера?
Как минимум файл, а в идеале вообще отдельный процесс.
По поводу файла очень спорно. Почему их должно быть много? Один файл, одна консольная команда. В зависимости от очереди подключается необходимый консьюмер со своей уникальной логикой. Это не мешает масштабироваться, но и не требует постоянно писать один и тот же код работы с кроликом.
Подключение к транспорту выгодно отделять от бизнеслогики. То что вы описали называется конфигурированием консюмера, и да, его стоит сделать весьма конфигурируемым. В то же время, если вам нужно десять разных консюмеров, то держать их в одном файле через свитч/ифэлс - это просто особая дисциплина специальной олимпиады.
Про свитч-кейс, разумеется, речи и не было. Делать надо по-другому, но файл и команда лучше должна быть одна.
Что в этом файле должно происходить?
Подключение к кролику, выбор консьюмера (можно поискать его в регистри по названию консьюмера или очереди), запуск консьюмера и отслеживание сигналов процессу для паузы/остановки консьюмера.
Так, а консюмер при этом в отдельном файле, да?
Ну значит мы буквально об одном и том же говорим.
Почему я обратил внимание на «файл», потому что человек пишет на пхп, и он мог буквально консьюмеры писать в разных файлах не только как логику, но и как воркер.
Ну бывает такое, что люди несколько консюмеров в одном ворклоаде держат, жизь она такая. Может в коннекшнлимит уперлись.
Ну это нормально. Мы так делаем с простыми задачами. В случае необходимости масштабируем сначала воркер пул, а уже при необходимости выделяем воркер для очереди в отдельный процесс. Благо, наш воркер умеет запускать много консьюмеров разом.
Обсуждают сегодня