Как правило, шина сообщений (например, RabbitMQ, но не ограничиваясь ими) обеспечивает надежную очередь обработки заданий.
Что для вас означает с точки зрения веб-приложения, возможность масштабированияВаше приложение по мере роста спроса и обеспечения быстрого и отзывчивого пользовательского интерфейса.
Вместо того, чтобы заставлять пользователя ждать, пока выполняется задание, он может запросить выполнение задания (например, нажав кнопку на веб-странице, чтобы начать перекодирование видеофайла на вашем сервере), которое отправляетотправьте сообщение на вашу шину, давайте подождем, пока бэкэнд-служба подберет его, и, возможно, уведомит пользователя о том, что работа началась / начнется.Затем вы можете вернуть управление в пользовательский интерфейс, чтобы пользователь мог продолжить работу с приложением.
В этой ситуации ваш веб-интерфейс не требует значительных усилий, вместо этого просто предоставляя пользователю возможность видеть этапы процесса, пока высочтите нужным (например, задание может постепенно обновлять записи базы данных в соответствии с состоянием процесса, которое вы можете запрашивать и отображать для вашего пользователя).
Я бы предположил, что любое веб-приложение, которое получает какой-либо значительный трафик, имеет такую инфраструктуру.Хотя есть и недостатки (сбои в работе сети могут потенциально нарушить доставку сообщений, более сложную инфраструктуру и т. Д.), Преимущества масштабирования бэкэнда становятся все более очевидными.Если вы используете облачные сервисы, этот тип инфраструктуры упрощает добавление дополнительных обработчиков сообщений для обработки ваших заданий, подписываясь на очередь заданий и просто выбирая сообщения для обработки.