skolodyazhnyy / butter-amqplib
PHP专用的Butter AMQP库,纯PHP编写
0.1.0
2016-09-17 15:55 UTC
Requires
- psr/log: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^1.12
- phpunit/phpunit: ^5.5
- symfony/process: ^2.5|^3.0
This package is auto-updated.
Last update: 2024-09-12 20:41:28 UTC
README
Butter AMQP是一个纯PHP实现的AMQP协议客户端库。它不依赖于任何PHP扩展或其他PHP包。它非常轻量级且速度快。
Butter AMQP支持所有基本的AMQP特性和RabbitMQ扩展,包括:交换机到交换机绑定,发布者确认,否定确认以及其他。
主要功能
- AMQP协议的纯PHP实现:对PHP没有特殊要求,只需使用composer即可轻松升级
- 易于使用的功能API,隐藏了实现细节,减少了出错的风险
- 代码生成器用于帧编码和解码,有助于实现高性能和低内存使用
- 清晰的设计使得使用AMQP变得愉快,易于测试和理解
- 完全支持AMQP协议版本0.9.1和RabbitMQ扩展
安装
开始使用Butter AMQP库的最简单方法是使用composer进行安装。它几乎没有任何依赖,并且不会与其他库冲突。
打开命令行,进入您的项目目录,然后执行以下命令以下载此库的最新版本。
$ composer require skolodyazhnyy/butter-amqplib dev-master
此命令要求您全局安装Composer,请参阅Composer文档中的安装章节。
用法
如果您是AMQP的新手,我建议您查看RabbitMQ教程,该教程仅用6章教程解释了AMQP协议的所有功能!我为Butter AMQP采用了代码示例。
以下每个代码片段都扩展了上一个代码片段。
连接到服务器
建立与服务器的连接并打开一个通道。
use ButterAMQP\ConnectionBuilder; $connection = ConnectionBuilder::make() ->create("//guest:guest@localhost/%2f"); $channel = $connection->channel(1);
定义拓扑
声明交换机和队列。
use ButterAMQP\ExchangeInterface as Exchange; use ButterAMQP\QueueInterface as Queue; $channel->exchange('butter') ->define(Exchange::TYPE_FANOUT, Exchange::FLAG_DURABLE); $channel->queue('butter') ->define(Queue::FLAG_DURABLE | Queue::FLAG_EXCLUSIVE) ->bind('butter');
发布消息
向新声明的交换机发布消息,它将被传递到队列。
use ButterAMQP\Message; // Construct a message to be published $message = new Message('hi there', ['content-type' => 'text/plain']); // Publish message to default exchange, with routing key "text-messages". $channel->publish($message, '', 'text-messages');
消费消息
接收您的消息并确认其传递。
use ButterAMQP\Delivery; // Declare consumer $consumer = $channel->consume('text-messages', function(Delivery $delivery) { echo "Receive a message: " . $delivery->getBody() . PHP_EOL; // Acknowledge delivery $delivery->ack(); }); // Serve connection until consumer is cancelled while($consumer->isActive()) { $connection->serve(); }
关闭连接
正确关闭与服务器的连接将保证所有临时队列将被删除,并释放资源。
您不需要关闭通道,只需关闭连接即可。
$connection->close();
已知问题
- 不支持十进制类型
- 不支持无符号长整型