定制 etopian/rabbitmq-management-client 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

etopian/rabbitmq-management-client

Composer 安装命令:

composer require etopian/rabbitmq-management-client

包简介

RabbitMQ Management Plugin API Client

README 文档

README

Build Status

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 我们能提供哪些服务?
定制开发 / 二次开发

基于 etopian/rabbitmq-management-client 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 5
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 24
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-10-09