Где подписаться на Redis Pub / Sub в Laravel? - PullRequest
0 голосов
/ 01 января 2019

Я немного использовал Redis's Pub / Sub в своем приложении, и до сих пор это было здорово.Я могу отправить публикацию из Laravel в другой бэкэнд-процесс, который может подписаться и в конечном итоге опубликовать событие обратно в Laravel.

Вариант использования для пользователя выглядит следующим образом:

отправить форму -> дождаться ответа (несколько минут) -> продолжить транзакцию

На бэкэнде:

форма отправляет сообщение в маршрут, затем в контроллер, который публикуетэто третьему лицу с подпиской (первый канал), и в конечном итоге третье лицо публикует обратно (второй канал)

Основная проблема: Я не знаю, где подходящее место для подпискина (канал два) и обработку того, что там публикуется.

В идеале я мог бы обрабатывать запросы на публикацию двумя способами:

  1. Уведомление пользователячто их форма была обработана, и они могут перейти к следующему шагу (возможно, с обновлением свойства компонента Vue)

  2. Хранение информации из публикации в моей базе данных.

В документах они есть в команде, которую, если я попытаюсь использовать здесь, выглядело бы так:

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 я должен подписаться?Есть ли лучшая практика для реагирования на эти события?

1 Ответ

0 голосов
/ 01 января 2019

Redis::subscribe используется в команде, как в этом примере, для непрерывного прослушивания на данном канале.

Из документов:

Сначала давайте настроим слушателя канала, используяметод подписки.Мы поместим этот метод в команду Artisan, так как вызов метода подписки запускает длительный процесс :

Вы захотите выполнить команду с помощью диспетчера процессовкак supervisor или pm2, почти так же, как в документах описывается запуск прослушивателей очереди .

...