ReactPHP + RabbitMQ как делать неблокирующее ожидание новой сообщеньки?

Добрый день всем.

Собственно вопрос. Решил сделать сообщения на сайте на ReactPHP + RabbitMQ надеясь на асинхронность в лонг пулинге. Но по факту, PhpAmqpLib использует блокирующее ожидание. Может кто-то подсказать, как ждать и не блокироваться?
  • Вопрос задан
  • 1198 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Ramoder
Не совсем понял про блокирующие ожидание PhpAmqpLib, в расширении amqp для php есть вполне себе non blocking метод get

Мне кажется для вашей задачи подойдет phpdaemon. Конечно придется также использовать таймеры (в phpdaemon реализованы асинхронные таймеры через libevent), либо подождать пока для него реализуют протокол amqp. Плюс все отлично параллелится за счет асинхронной работы фреймворка.
Ответ написан
Комментировать
Что вы подразумеваете под неблокирующим ожиданием? Если подключились - проверили сообщения - отключились - то это предполагает, что такую операцию нужно производить с определенной периодичностью, тогда смысл RabbitMQ в данном сценарии теряется, т.к. можно через определенный интервал времени проверять новые сообщения сразу в СУБД например.
Что касается сообщений и RabbitMQ, то можно создавать 2 очереди, (одну для передачи сообщений, другую для получения). Соответственно для получения сообщений подключаемся к очереди, слушаем из нее сообщения и при получении выдаем пользователю. Для отправки сообщений шлем отдельный запрос во вторую очередь, тут блокировки не будет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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