skolodyazhnyy/butter-amqplib

PHP专用的Butter AMQP库,纯PHP编写

0.1.0 2016-09-17 15:55 UTC

This package is auto-updated.

Last update: 2024-09-12 20:41:28 UTC


README

Build Status Scrutinizer Code Quality Code Coverage

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();

已知问题

  • 不支持十进制类型
  • 不支持无符号长整型