etopian/rabbitmq-management-client
Composer 安装命令:
composer require etopian/rabbitmq-management-client
包简介
RabbitMQ Management Plugin API Client
关键字:
README 文档
README
Update: This branch is an update to this library to allow it to work with modern (circa 2019) versions of PHP (>=7.2), RabbitMQ, Guzzle, React, Doctrine, PHPUnit and related support libraries. (see composer.json for version details) The existing version had too many dependencies on deprecated versions of other libraries preventing it from being utilized on new projects. This update fixes that.
Extensive changes were needed under the hood but the API should remain nearly identical with the exception of the exceptions thrown from the non-async client code.
Cases involving a non-existent entity (now including Add methods, such as trying to add a binding to a non-existant vhost) are now uniformly thrown as RabbitMQ\Management\Exception\EntityNotFoundException where previously some were RabbitMQ\Management\Exception\RuntimeException. Other exceptions from the underlying Guzzle library are now passed through as GuzzleHttp\Exception\ClientException rather than GuzzleHttp\Exception\RequestException due to changes in Guzzle.
Note that the properties and format thereof returned in queries are dependent on the rabbitmq server version. The properties defined in the Entity classes of this package have been updated to include those provided by RabbitMQ 3.8 (with some older ones retained but not necessarily populated.) These are primarily provided for reference and code hinting in IDEs but your results may vary with an actual server. Differences between the defined entity classes and the properties returned by the server are silently ignored and all results returned are passed through.
Note also that due to management api caching and statistics collection intervals, the results returned from queries may be incomplete or delayed. Creating an object and then immediately querying it may yield incomplete or missing results. Because of this, the unit tests have built in delays to wait before checking the returned results in various tests.
(end update message)
This library is intended to help management of RabbitMQ server in an application. It provides two ways to query RabbitMQ : Synchronous query with Guzzle and Asynchronous query with React.
Asynchronous Queries
use RabbitMQ\Management\AsyncAPIClient; use React\EventLoop\Factory; $loop = Factory::create(); $client = AsyncAPIClient::factory($loop, array( 'url' => '127.0.0.1', )); $loop->addPeriodicTimer(1, function () use ($client) { $client->listQueues() ->then(function($queues) { echo "\n------------\n"; foreach ($queues as $queue) { echo sprintf("Found queue %s with %d messages\n", $queue->name, $queue->messages); } }, function ($error) { echo "An error occured : $error\n"; }); }); $loop->run();
Asynchronous Client do not currently support Guarantee API.
Synchronous Queries
Ensure a queue has a flag :
use RabbitMQ\Management\APIClient; use RabbitMQ\Management\Entity\Queue; use RabbitMQ\Management\Exception\EntityNotFoundException; $client = APIClient::factory(array('url'=>'localhost')); try { $queue = $client->getQueue('/', 'queue.leuleu'); if (true !== $queue->durable) { $queue->durable = true; $client->deleteQueue('/', 'queue.leuleu'); $client->addQueue($queue); } } catch (EntityNotFoundException $e) { $queue = new Queue(); $queue->vhost = '/'; $queue->name = 'queue.leuleu'; $queue->durable = true; $client->addQueue($queue); }
You can also use the Guarantee manager :
use RabbitMQ\Management\APIClient; use RabbitMQ\Management\Entity\Queue; use RabbitMQ\Management\Guarantee; $client = APIClient::factory(array('url'=>'localhost')); $manager = new Guarantee($client); $queue = new Queue(); $queue->vhost = '/'; $queue->name = 'queue.leuleu'; $queue->durable = true; $queue->auto_delete = false; $queue = $manager->ensureQueue($queue);
API Browser
Browse the API here.
Documentation
Read the documentation at Read The Docs !
License
This library is released under the MIT license (use it baby !)
etopian/rabbitmq-management-client 适用场景与选型建议
etopian/rabbitmq-management-client 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 10 月 09 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「api」 「rabbitmq」 「management」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 etopian/rabbitmq-management-client 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 etopian/rabbitmq-management-client 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 etopian/rabbitmq-management-client 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Work with RabbitMQ in Laravel.
Microservice RPC through message queues.
PHP AMQP Binding Library
A PSR-7 compatible library for making CRUD API endpoints
A Silverstripe module to allow you to log into any of your Silverstripe sites from one place.
Task system for APPUI
统计信息
- 总下载量: 5
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-10-09