prolic / humus-amqp
PHP-AMQP 库,具有 RabbitMQ 扩展
Requires
- php: ^7.4 || ^8.0
- ext-json: *
- beberlei/assert: ^3.2.7
- marc-mabe/php-enum: ^4.7
- psr/log: ^1.0 || ^2.0 || ^3.0
Requires (Dev)
- ext-pcntl: *
- laminas/laminas-servicemanager: ^3.0
- malukenho/docheader: ^0.1.8 || ^1.0
- php-amqplib/php-amqplib: ^3.0
- php-coveralls/php-coveralls: ^2.4
- php-mock/php-mock-phpunit: ^2.6
- phpspec/prophecy: ^1.17
- phpspec/prophecy-phpunit: ^2.0
- phpunit/phpunit: ^9.6
- prooph/php-cs-fixer-config: ^0.5.0
- psr/container: ^1.0
- sandrokeil/interop-config: ^1.0 || ^2.0
- symfony/console: ^5.4 || ^6.3
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-08-25 10:05:30 UTC
README
PHP 7.4 AMQP 库
文档 由 Read the Docs 提供。
概览
PHP 7.4+ AMQP 库,支持多种驱动程序,并提供功能齐全的消费者、生产者和 JSON-RPC 客户端/服务器实现。
JSON-RPC 部分实现了 JSON-RPC 2.0 规范。
当前支持以下驱动程序: php-amqp 和 PhpAmqpLib。
php-amqp 至少需要 v1.9.3,PhpAmqpLib 至少需要 v3
此库附带 psr/container
工厂,可以帮助您设置一切。
Zend 框架和 Symfony 框架集成
安装
您可以通过添加 "prolic/humus-amqp": "^2.0"
作为 composer.json 中的要求来通过 composer 安装 prolic/humus-amqp。
使用方法
交换机
$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-扩展
- 我们建议使用 php-amqp >=v1.9.3 或从 master 编译它,如果您在使用 amqp 扩展时遇到任何问题,请首先检查它们的 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 聊天中打招呼。
贡献
请随意分支并扩展现有的插件或添加新的插件,并发送包含您更改的 pull request!为了建立一致的代码质量,请为您的所有更改提供单元测试,并可能更新文档。
许可
在 MIT 许可下发布。