znk3r/mqlib

基于php-amqplib的PHP AMQP抽象库(5.3+)

dev-master 2015-09-06 20:58 UTC

This package is not auto-updated.

Last update: 2024-09-28 18:10:58 UTC


README

MQlib是PHP(5.3+)上基于php-amqplib的AMQP抽象库。

php-amqplib是一个非常好的库,但由于其糟糕的接口而难以使用。每次我都需要记住exchange_declare()或queue_declare()中每个参数的含义。这个库试图解决这个问题,提供了一个更简单的接口,以快速开发生产者和消费者。

安装

通过composer.json

"require": {
    "znk3r/mqlib": "dev-master"
}

基本用法

生产者

基本生产者

<?php

use znk3r\MQlib\Producer;
use znk3r\MQlib\Exchange\Fanout;
use znk3r\MQlib\Message\Json as JsonMessage;

$producer = new Producer;
$producer->getBroker()->setTimeout(2); // seconds

$exchange = new Fanout('my_exchange');
$message = new JsonMessage($data);

$producer->publish($message, $exchange);

多消息

<?php

use znk3r\MQlib\Producer;
use znk3r\MQlib\Exchange\Fanout;
use znk3r\MQlib\Message\Text as TextMessage;

$producer = new Producer;
$producer->connect();
$producer->openChannel();

$producer->sendTo(new Fanout('my_exchange'));

foreach ($i = 0; $i < 100; $i++) {
    $producer->publish(new TextMessage($i));
}

$producer->closeChannel();
$producer->disconnect();

消费者

Fanout消费者

<?php

use znk3r\MQlib\Consumer;
use znk3r\MQlib\Queue\Queue;
use znk3r\MQlib\Exchange\Fanout;

$exchange = new Fanout('my_exchange');

$queue = new Queue('my_queue);
$queue->bindTo($exchange);

$consumer = new Consumer('consumer_name');
$consumer->listen($queue, function($msg) {
    echo $msg->getBody().PHP_EOL;
    $msg->acknowledged();
});