Синхронный AMQP из PHP - PullRequest
       27

Синхронный AMQP из PHP

3 голосов
/ 21 февраля 2012

Может ли PHP обрабатывать AMQP как службу RPC и отправлять сообщение и блокировать до тех пор, пока ответ не будет возвращен? Есть ли хорошие примеры этого и делают ли какие-либо библиотеки такую ​​функциональность простой в использовании?

Мне бы хотелось иметь гибкость системы обмена сообщениями, но при этом защитить веб-уровень от необходимости знать о его асинхронной природе.

1 Ответ

3 голосов
/ 23 февраля 2012

Конечно, абсолютно. Посмотрите, как запрос в стиле RPC обтекает систему:

  1. Запрос выдан
  2. Запрашивающий теперь блокирует ожидание ответа на этот запрос

Это полностью реализуемо с асинхронной системой сообщений, такой как AMQP. Вам просто нужно сделать корреляцию RPC самостоятельно:

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

RabbitMQ , брокер AMQP, предлагает документацию онлайн о том, как именно это сделать.

...