Михаил
Это очень большая нагрузка
The Ant
В мессенджере все через транспорт делается, и оно основное. Очередь там как-то сбоку. Т.е. воркер можно на транспорт повесить, но не отдельно на очередь...
Михаил
Хотя писал игровой сервер там раунд робин нормально работал, но сами консъюмеры отправляли друг другу сообщения если не могли его обработать да и всё на сокетах было
Павел
Павел
Павел
Павел
Павел
Хотя можно направить и на определенную очередь, только на 1, а не на весь транспорт
Михаил
ну да
Михаил
сам брокер должен просто отдавать ему сообщения только с определёным id
The Ant
А опции откуда? Я смотрел исходники, вроде небыло ничо такого
Павел
Павел
The Ant
Походу не туда смотрел )
The Ant
Пасиб )
Михаил
Павел
Павел
Ну тольео интерфейм есть для забора юзера
Михаил
binsole messanger:consume async_default?
Михаил
а дальше природа сама разберётся?
Павел
Но консюмер не работает именно с роутинг кеями
Павел
Роутинг кеи только чтобы положить в определенную очередь, все, на этом их роль кончается
Павел
Дальше есть только очереди и всё
Михаил
то есть у меня 4 пода, в поде есть бекграунд джобы. В рамках одного пода я могу гарантировать что у меня будет
bin/console messanger:consume async_default —queue=message_direct_1
bin/console messanger:consume async_default —queue=message_direct_2
bin/console messanger:consume async_default —queue=message_direct_3
bin/console messanger:consume async_default —queue=message_direct_4
и в итоге у меня, допустим из message_direct_1 будут читать 4 пода что не решает проблему
Павел
Павел
Если сделать таких 4 инстанса, то будет да 4 консбмера читать из message_direct_1, но теряется весь смысл если говорить про избавление от гонки
Михаил
Ну вот я об этом же
Михаил
как сделать так чтоб при старте приложения каждый воркер знал от куда ему читать
Павел
Павел
bin/console messanger:consume async_default —queue=message_direct_1
bin/console messanger:consume async_default —queue=message_direct_2
bin/console messanger:consume async_default —queue=message_direct_3
bin/console messanger:consume async_default —queue=message_direct_4
The Ant
Так делать 1 очередь = 1 воркер, скейлить очереди
Михаил
так
Михаил
и у меня запускается 4 экземпляра такого приложения
Павел
Михаил
КАААААК?
Павел
КАААААК?
Я не понимаю... вы же указалли —queue=message_direct_1
Михаил
ofc
Михаил
щас
Павел
Это значит читать ТОЛЬКО из этой очерели
Михаил
С кубернетисом работали? или с докер свормом?
Михаил
Так, начнём с азов
Михаил
Есть такая вещь как упаковка приложения
Михаил
Я сделал приложение в котором есть код
Михаил
Павел
У вас должны быть поды воркеров и например там указаны очерели через env
Павел
и каждый под настраивается с своим env
Павел
Михаил
Воооо
Михаил
Вооот
Михаил
Уже хорошо
Павел
Автоскалирование, и каждый под читал тольео свою очередь
Павел
Номер пода - это номер в названии очереди
Михаил
Но как это сделать. Только через env?
Павел
Но как это сделать. Только через env?
Ну это больше к вопросу девоспирования, не подскажу. Может можно как то просто завести после команду внутри пода и ее прописать, может через env
Павел
Павел
Есть еще один кейс
Павел
Можно сделать отдельный траспорт на чтение
Павел
И в нем указать direct_%env%
Павел
Только одну очередь
Павел
Т.е. в записи куча очередей,а в чтении только 1. Т.е. два транспорта
Павел
и тогда можно заводить вот так
bin/console messanger:consume async_default
Михаил
Павел
Без указания очереди, но env все равно должен быть внутри инстанса
Павел
Но там проблема посерьезнее, нельзя просто так мнять кол-во, потому что будет расинхрон
Павел
Это опять к вопросу как правильно шардить БД
Михаил
Михаил
иначе работать не будеь
Павел
Типа когда надо увелисить кол-во шардов
Павел
Только надо передплой или чистку кэша
Михаил
ну или энв читать по сокетам