Когда мне следует перейти с Symfony EventDispatcher на RabbitMQ (любая библиотека *MQ)?
В настоящее время я думаю о том, что на нашей платформе число событий, генерируемых пользователями, увеличивается каждый день (звонок начался, звонок завершен, запись звонка готова, пользователь заблокирован и т. Д.), Поэтому, когда должно быть подходящее время для переключения с Symfony EventDispatcher на что-то более эффективное, масштабируемое?
Поправьте меня, пожалуйста, если я не прав: Symfony EventDispatcher загружает каждого подписчика в оперативную память сервера и удерживает его до тех пор, пока запрос не будет обработан? Если да, это означает, что 2 сгенерированных события будут занимать 2x(сумма всех классов подписчиков) памяти в ОЗУ, что приведет меня к увеличению ОЗУ сервера и приведет к тому, что я буду платить больше вместо использования эффективных методов обработки событий (libs, архитектура системы и т. д.).
1 ответ
ИМХО основной причиной перехода на MQ должно быть большое время выполнения кода.
Если у вас много событий (например, с операциями с базой данных), тогда время выполнения увеличивается.
События запускаются внутри запроса-> ответа, и с помощью MQ вы можете поместить его за пределы своего приложения, это означает, что у вас будет лучшее время выполнения, но все операции с событиями будут работать "в фоновом режиме" - так что он не будет "реальным" время".
Лично я никогда не видел большого использования оперативной памяти, которое приходит напрямую от подписчиков / слушателей - даже в некоторых крупных проектах.