Как организовать работу PHP и RabbitMQ?

Необходимо при возникновении определенного события отправлять запросы на обработку данных на сторонний сервер, который периодически "отваливается", а кроме того имеет ограничение - принимать в минуту не более 5 запросов. Событий может возникать больше 5 в минуту, поэтому было принято решение использовать очереди (RabbitMQ).
Большинство примеров использования очередей сводится к банальному:
  • запустил в одной консоли скрипт, в котором установил соединение, задал точку обмена, очередь и отправил сообщение "Hello World!"
  • запустил во второй конcоли скрипт, в котором также установил соединение, задал точку обмена, очередь, подписался на сообщения этой очереди и задал бесконечный цикл:
    while ($channel->is_consuming()) {
    	      $channel->wait();
    }


  1. Как ограничить количество прочтенных сообщений получателем, чтобы их было не более 5 в минуту, чтобы соблюсти наложенное ограничение сторонним сервером?
  2. Как несмотря на наличие ограничения на количество читаемых сообщений в минуту, сделать бесконечно ожидающего слушателя? Держать на проде постоянно запущенный в консоли скрипт - это плохое решение.
  3. Как быть с получением и обработкой сообщений, если сторонний сервер вообще на какое-то время "отвалился"?
  • Вопрос задан
  • 216 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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