169 похожих чатов

Всем привет. Ребята, подскажите пожалуйста новичку в Laravel, есть ли

в нём с коробки готовое решение для отправки и получения событий через Redis? Т.е у меня движок стоит на нескольких серверах, и общее среди них только Redis, хочу что бы когда отправлялось событие оно отрабатывало на всех серверах.

20 ответов

12 просмотров

Новичек, ищи ответ в доке перед тем как задать вопрос https://laravel.com/docs/8.x/redis#pubsub

Так они ищут, но не находят, потому что не знают, что искать

Road-Test Автор вопроса

Т.е варианта кроме как во внутрь Redis::subscribe(['test-channel'], function ($message) { засунуть dispatch(Событие в зависимости от $message) }); с коробки нету?

шта?

Road-Test Автор вопроса

Я выполняю команду php artisan make:event MyEvent и php artisan make:listener MyEventNotification —event=MyEvent Далее я подключаю слушатель в котором пишу что при получении этого события например записывать данные в файл. Далее я вызываю на одном из серверов это событие и хочу что бы после этого на всех серверах с моим скриптом выполнилось это событие и были записаны данные в файл. Могу ли я сделать такую конструкцию стандартными решениями с коробки?

Ну ссылка из доки это и есть из-коробочное решение. Куда еще ”изкоробочней”? Редис pubsub оповещает всех, кто подписался на канал.

Road-Test Автор вопроса

Хотелось бы что бы в разделе документации https://laravel.com/docs/8.x/events было написано что-то типа "Using Events with Redis Pub/Sub" и тогда было бы то что мне нужно )

тебе скорее всего нужны broadcast’ы, они пушат в редис но я бы их не юзал, у них префиксы у ивентов все хрен скинешь.

Road-Test Автор вопроса

Спасибо, сейчас изучу

Да, создаешь нотификейшн, в нем конекшн редис. И он пушит эти нотификейшны в pubsub. Но у ивентов будет префмксом весь неймспейс. Я не помню как им управлять. Крч в redis-cli в консольке вбиваешь psubscribe * И увидешь все ивенты, которые были запушены https://laravel.com/docs/8.x/notifications#customizing-the-notification-queue-connection

Road-Test Автор вопроса

Принял, спасибо 😉

я все напутал ахаха) 🤔 https://laravel.com/docs/8.x/broadcasting#broadcast-queue

Road-Test Автор вопроса

😉

Road-Test Автор вопроса

Да, это именно то что я искал, спасибо!

Road-Test Автор вопроса

Почитал, изучил, но не нашел ответа на вопрос, а каким образом мне слушать события, которые broadcast'ятся в redis, что бы по ним запускались обработчики? Т.е не вижу не какой команды типа php artisan broadcast:listen в которой заложен Redis::subscribe который в свою очередь события которые кастяться превращает в объекты Event и запускают их обработку на сервере

подписка - это уже как выше я и скидывал делаешь make:command и внутрь пихаешь Redis::subscribe

Road-Test Автор вопроса

Понял, т.е решение с коробки позволяет только транслировать события в redis, но нет готового решения которое от туда достаёт данные и превращает на сервере обратно в событие вызывая слушатель

а зачем? чтобы оно попало в рекурсию и снова отброадкастила событие?

Ты должен сделать сервис или просто отдельный метод, который реализует обработку события. И вызывать его и в команде с subscribe и в листенере. Т.к. листенер обрабатывает только локальные ивенты.

Road-Test Автор вопроса

Да я это и имел введу )

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта