func0der / humus-amqp
PHP-AMQP 库,支持 RabbitMQ 扩展
Requires
- php: ^7.4 || ^8.0
- ext-json: *
- beberlei/assert: ^3.2.7
- marc-mabe/php-enum: ^4.2
- psr/log: ^1.0 || ^2.0 || ^3.0
Requires (Dev)
- ext-pcntl: *
- laminas/laminas-servicemanager: ^3.0
- malukenho/docheader: ^0.1.8
- php-amqplib/php-amqplib: ^2.11
- php-coveralls/php-coveralls: ^2.4
- php-mock/php-mock-phpunit: ^2.6
- phpspec/prophecy: ^1.10
- phpunit/phpunit: ^8.5
- prooph/php-cs-fixer-config: ^0.4.0
- psr/container: ^1.0
- sandrokeil/interop-config: ^1.0 || ^2.0
- symfony/console: ^5.0
Suggests
- ext-amqp: >= 1.9.3 For usage together with php amqp extension
- ext-pcntl: For process control management
- php-amqplib/php-amqplib: >= 2.11 For usage together with php-amqplib
- psr/container: For usage of provided factories
- sandrokeil/interop-config: For usage of provided factories
- symfony/console: For usage of the provided console tool
Conflicts
This package is auto-updated.
Last update: 2024-09-06 23:22:01 UTC
README
请注意,这只是一个 prolic/humus-amqp 的镜像。我只是创建了这个副本来发布库的新版本。我没有计划积极维护它。
PHP 7.4/8.x AMQP 库
文档 由 Read the Docs 支持。
概述
PHP 7.4 AMQP 库,支持多种驱动程序,并提供全功能的消费者、生产者以及 JSON-RPC 客户端/服务器实现。
JSON-RPC 部分实现了 JSON-RPC 2.0 规范。
当前支持的驱动程序包括: php-amqp 和 PhpAmqpLib。
php-amqp 至少需要 v1.9.3,php-amqplib 至少需要 v2.11.0
此库附带 psr/container
工厂,可帮助您设置一切。
Zend 框架和 Symfony 框架集成
安装
您可以通过 composer 安装 prolic/humus-amqp,将 "prolic/humus-amqp": "^2.0"
添加到您的 composer.json 中作为需求。
用法
交换
$exchangeName = 'test-exchange';
$exchange = ExchangeFactory::$exchangeName($container);
$exchange->publish('test-message');
队列
$queueName = 'test-queue';
$queue = QueueFactory::$queueName($container);
$message = $queue->get();
$queue->ack($message->getDeliveryTag());
生产者
$producerName = 'test-producer';
$producer = ProducerFactory::$producerName($container);
$producer->confirmSelect();
$producer->publish(['foo' => 'bar'], 'my-routing-key');
$producer->waitForConfirm();
JSON RPC 客户端
$clientName = 'my-client';
$client = JsonRpcClientFactory::$clientName($container);
$client->addRequest(new JsonRpcRequest('my-server', 'method', ['my' => 'params'], 'id-1'));
$client->addRequest(new JsonRpcRequest('my-server', 'method', ['my' => 'other_params'], 'id-2'));
$responseCollection = $client->getResponseCollection();
JSON RPC 服务器
$serverName = 'my-server';
$server = JsonRpcServerFactory::$serverName($container);
$server->consume();
注意
从 1.x 升级到 1.4
之前:如果启用了 auto_setup_fabric
,则会自动绑定队列和交换。交换也会被创建。匿名队列需要将 auto_setup_fabric
设置为 true。
新:如果启用了 auto_setup_fabric
或队列是匿名的(没有名称),则队列将被创建并绑定,但不会创建交换。如果您想启用创建依赖交换(包括交换绑定),请将新参数 auto_setup_exchanges
设置为 true。
这是一个轻微的 BC 断裂,但旧的行为问题如此严重,以至于我不得不做出这个改变。
AMQP-Extension
- 如果您在使用 amqp 扩展时遇到任何问题,我们建议使用 php-amqp >=v1.9.3 或从 master 编译它。首先检查他们的 issue tracker。
ext-amqp 驱动程序是性能最好的。
PhpAmqpLib
-
当使用 php-amqplib 作为驱动程序时,需要注意的是,StreamConnection(同样适用于 SSLConnection)没有超时的可能性。如果您想让消费者在接收不到更多消息时超时,您应该使用 SocketConnection(假设您不需要 SSL 连接)。
-
当使用 php-amqplib 作为驱动程序并且您使用 LazyConnection 时,您不应该自己创建通道,而是调用
$channel = $connection->newChannel()
支持
- 在 https://github.com/prolic/HumusAmqp/issues 上提交问题。
- 在 HumusAmqp gitter 聊天中打招呼。
贡献
请随意fork并扩展现有插件或添加新插件,并提交带有您更改的 pull request!为了建立一致的代码质量,请为您的所有更改提供单元测试,并可能更新文档。
许可
在 MIT 许可下发布。