yangweijie/es-bunny

Installs: 4

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/yangweijie/es-bunny

v0.7.0 2025-10-13 06:44 UTC

This package is auto-updated.

Last update: 2025-10-13 06:45:12 UTC


README

ES-Bunny是一个适用于EasySwoole的AMQP/RabbitMQ客户端库,基于PHP实现,支持同步和异步(基于Swoole协程)两种使用方式。

特性

  • 同步客户端:适用于简单的应用场景
  • 异步客户端:基于Swoole协程,适用于需要高并发处理能力的场景
  • 完全兼容AMQP 0-9-1协议
  • 支持心跳检测,确保连接稳定性
  • 易于使用的API,遵循AMQP类/方法命名约定

安装

composer require yangweijie/es-bunny

环境要求

  • PHP >= 7.4
  • Swoole扩展(可选,用于异步客户端)
  • EasySwoole框架(可选,用于异步客户端)

使用方法

同步客户端

use Yangweijie\EsBunny\SynchronousClient;

$client = new SynchronousClient([
    'host' => '127.0.0.1',
    'port' => 5672,
    'vhost' => '/',
    'user' => 'guest',
    'password' => 'guest',
]);

try {
    $client->connect();
    $channel = $client->channel();
    $channel->queueDeclare('test-queue', false, true, false, false);
    
    // 发布消息
    $channel->publish('Hello World!', [], '', 'test-queue');
    
    // 消费消息
    $message = $channel->get('test-queue');
    if ($message) {
        echo "Received: " . $message->content . "\n";
        $channel->ack($message);
    }
    
    $client->disconnect();
} catch (\Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
}

异步客户端(基于Swoole协程)

use Yangweijie\EsBunny\EasySwooleClient;

$client = new EasySwooleClient([
    'host' => '127.0.0.1',
    'port' => 5672,
    'vhost' => '/',
    'user' => 'guest',
    'password' => 'guest',
]);

try {
    $client->connect();
    $channel = $client->channel();
    $channel->queueDeclare('test-queue', false, true, false, false);
    
    // 发布消息
    $channel->publish('Hello World!', [], '', 'test-queue');
    
    // 消费消息
    $message = $channel->get('test-queue');
    if ($message) {
        echo "Received: " . $message->content . "\n";
        $channel->ack($message);
    }
    
    $client->disconnect();
} catch (\Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
}

运行示例

php example/basic.php

测试

phpunit

许可证

MIT