При обсуждении было предложено сделать PHP API более объектной
моделью,
более близкой к модели, предложенной в Протоколе AMQP.
Код немного усложнится, но объектная модель будет более красивой,
Прежде чем перейти к кодированию, представляю на обсуждение новое API
Класс AMQPConnection - открытие логического соединения, включая
канальное соединение.
$cnn = new APMQConection( cnn, [host=localhost],[port=5672],
[login=guest],[psw=guest],[vhost=/] );
$cnn->getResult(); - true/false результат выполнения соединения
Класс Обмена AMQPExchange
$exchange = new AMQPExchange($cnn, [name],[parms]) - создание обмена,
если задано имя иначе инициализация класса
$res = $exchange->declare([name]) - объявить обмен
$res = $exchange->delete([name]) - удалить обмен, если имя не задано -
удаляется с текущим именем
$res = $exchange->publish( msg, routing_key, [parms])
$res = $exchange->getResult(); - true/false результат выполнения
последней операции
$exchange = new AMQPExchange($cnn, name,[parms]) эквивалентно
$exchange = new AMQPExchange($cnn);
$res = $exchange->declare();
Класс Очереди AMQPQueue
$queue = new AMQPQueue(cnn, [name],[params]); - создание очереди, если
задано имя иначе инициализация класса
$res = $queue->delete([name]) - удаление очереди, возвращает результат
выполнения операции
$res = $queue->declaere([name],[params]) - объявление очереди,
возвращает результат выполнения операции.
$res =$queue->bind(exchange,routing_key, [parms]); -связь очереди и
обмена
$queueItem = $queue->getItem(); - получить один элемент из очереди
$arrayOfQueueItems= $queue->consume([n]) - получить массив n-сообщений
из очереди (все прочие сбрасываются ) если n не задано - выбираются
все сообщения
$queue->getResult(); - true/false результат выполнения последней
операции, в основном предназначено для использования проверки операций
в конструкторе
$queue = new AMQPQueue(cnn, name,[params]); эквивалентно:
$queue = new AMQPQueue(cnn)
$queue->declaere(name,[params])
Идеи, вопросы?
Добрый день.Может быть для соединения использовать DSN синтаксис:$cnn = new APMQConection("apmq://guest:guest@localhost/test");ИМХО, гораздо удобней для понимания и меньше параметров для конструктора.
И вместо постоянных ->getResult() выбрасывать исключение внутри, например, AMQPConnection, если что-то пошло не так.
коннекцию AMQPConnection сделал - массив параметров
добавлены методы
AMQPQueue->detete()
AMQPQueue->purge()
AMQPQueue->unbind()
AMQPExchange->delete()
AMQPExchange->bind()
метод getItem() переименован в AMQPQueue->get();
статья на Хабре: http://habrahabr.ru/blogs/webdev/73671/
документацию для проекта пока перевожу