Я немного использовал Redis's Pub / Sub в своем приложении, и до сих пор это было здорово.Я могу отправить публикацию из Laravel в другой бэкэнд-процесс, который может подписаться и в конечном итоге опубликовать событие обратно в Laravel.
Вариант использования для пользователя выглядит следующим образом:
отправить форму -> дождаться ответа (несколько минут) -> продолжить транзакцию
На бэкэнде:
форма отправляет сообщение в маршрут, затем в контроллер, который публикуетэто третьему лицу с подпиской (первый канал), и в конечном итоге третье лицо публикует обратно (второй канал)
Основная проблема: Я не знаю, где подходящее место для подпискина (канал два) и обработку того, что там публикуется.
В идеале я мог бы обрабатывать запросы на публикацию двумя способами:
Уведомление пользователячто их форма была обработана, и они могут перейти к следующему шагу (возможно, с обновлением свойства компонента Vue)
Хранение информации из публикации в моей базе данных.
В документах они есть в команде, которую, если я попытаюсь использовать здесь, выглядело бы так:
public function handle()
{
Redis::subscribe('channel-two', function ($message) {
// update the client so that the user moves on
// send $message contents to the database
});
}
, но это не кажется идеальнымдля меня, так как я хочу, чтобы этот канал подписался на 24/7, всегда слушаю.Даже если это в Команде, все еще очевидно, как лучше всего обновить клиента.
Где в моем проекте Laravel я должен подписаться?Есть ли лучшая практика для реагирования на эти события?