в нём с коробки готовое решение для отправки и получения событий через Redis? Т.е у меня движок стоит на нескольких серверах, и общее среди них только Redis, хочу что бы когда отправлялось событие оно отрабатывало на всех серверах.
Новичек, ищи ответ в доке перед тем как задать вопрос https://laravel.com/docs/8.x/redis#pubsub
Так они ищут, но не находят, потому что не знают, что искать
Т.е варианта кроме как во внутрь Redis::subscribe(['test-channel'], function ($message) { засунуть dispatch(Событие в зависимости от $message) }); с коробки нету?
шта?
Я выполняю команду php artisan make:event MyEvent и php artisan make:listener MyEventNotification —event=MyEvent Далее я подключаю слушатель в котором пишу что при получении этого события например записывать данные в файл. Далее я вызываю на одном из серверов это событие и хочу что бы после этого на всех серверах с моим скриптом выполнилось это событие и были записаны данные в файл. Могу ли я сделать такую конструкцию стандартными решениями с коробки?
Ну ссылка из доки это и есть из-коробочное решение. Куда еще ”изкоробочней”? Редис pubsub оповещает всех, кто подписался на канал.
Хотелось бы что бы в разделе документации https://laravel.com/docs/8.x/events было написано что-то типа "Using Events with Redis Pub/Sub" и тогда было бы то что мне нужно )
тебе скорее всего нужны broadcast’ы, они пушат в редис но я бы их не юзал, у них префиксы у ивентов все хрен скинешь.
Спасибо, сейчас изучу
Да, создаешь нотификейшн, в нем конекшн редис. И он пушит эти нотификейшны в pubsub. Но у ивентов будет префмксом весь неймспейс. Я не помню как им управлять. Крч в redis-cli в консольке вбиваешь psubscribe * И увидешь все ивенты, которые были запушены https://laravel.com/docs/8.x/notifications#customizing-the-notification-queue-connection
Принял, спасибо 😉
я все напутал ахаха) 🤔 https://laravel.com/docs/8.x/broadcasting#broadcast-queue
😉
Да, это именно то что я искал, спасибо!
Почитал, изучил, но не нашел ответа на вопрос, а каким образом мне слушать события, которые broadcast'ятся в redis, что бы по ним запускались обработчики? Т.е не вижу не какой команды типа php artisan broadcast:listen в которой заложен Redis::subscribe который в свою очередь события которые кастяться превращает в объекты Event и запускают их обработку на сервере
подписка - это уже как выше я и скидывал делаешь make:command и внутрь пихаешь Redis::subscribe
Понял, т.е решение с коробки позволяет только транслировать события в redis, но нет готового решения которое от туда достаёт данные и превращает на сервере обратно в событие вызывая слушатель
а зачем? чтобы оно попало в рекурсию и снова отброадкастила событие?
Ты должен сделать сервис или просто отдельный метод, который реализует обработку события. И вызывать его и в команде с subscribe и в листенере. Т.к. листенер обрабатывает только локальные ивенты.
Да я это и имел введу )
Обсуждают сегодня