memcrab/queue
Composer 安装命令:
composer require memcrab/queue
包简介
PHP Queue Lib for Memcrab Core API
README 文档
README
Install
composer require memcrab/queue
require_once DIR . "/needle_path/vendor/autoload.php";
use Memcrab\Queue; use Memcrab\Queue\SQS; use Memcrab\Queue\RMQ;
SQS Client
For starting use SQS Client we need to create a connection to the server like this. Create an instance of SQS and use 2 methods - setConnectionProperties() connect().
$connection = new SQS; $connection->setConnectionProperties(array $properties); $connection->connect();
Method setConnectionProperties(array $properties) - you must get region, credentials from your profile ($key and $secret), version,
for example:
$connection->setConnectionProperties(['region' => 'us-west-2', 'key' => 'your_aws_access_key_id', 'secret' => 'your_aws_secret_access_key', 'version' => '2022-11-05']);
Next we must declare a queue:
$connection->registerQueue('queue_name');
The method also have optional parameter $attibutes - array, where we can use:
- DelaySeconds (default 0),
- MaximumMessageSize (default 262.144 - 256KiB),
- MessageRetentionPeriod (default 345.600 - 4 days),
- Policy,
- ReceiveMessageWaitTimeSeconds (default 0),
- RedrivePolicy,
- VisibilityTimeout (default 30),
- KmsMasterKeyId,
- KmsDataKeyReusePeriodSeconds (default 300),
- SqsManagedSseEnabled,
- FifoQueue (default false),
- ContentBasedDeduplication (default false)
If we need to change message's visability, we can use:
$connection->changeMessageVisibility('queue_name', ['messages'], 10), where 10 - needle visibility timeout.
To check connection:
$connection->connectionStatus();
To get list of all queues:
$connection->getListOfQueues();
To send message:
$connection->sendMessage('queue_name', [message_body]);
We can add optional parameters:
- $attributes (array with BinaryListValues, BinaryValue, DataType, StringListValues and StringValue),
- $delaySeconds (default 10)
To receive message:
$connection->receiveMessage('queue_name');
To delete message fron queue:
$connection->deleteMessage('queue_name', ['message']);
To get queue's url:
$connection->getQueueUrl('queue_name');
If you need close connection, use:
$connection->shutdown();
RabbitMQ Client
For starting use RabbitMQ Client we need to create a connection to the server like this. Create an instance of RMQ and use 2 methods - setConnectionProperties() and connect().
$connection = new RMQ; $connection->setConnectionProperties(array $properties); $connection->connect();
Method setConnectionProperties(array $properties) - you must get hostname, port, username and password, for example:
$connection->setConnectionProperties(['host' => 'localhost', 'port' => '5672', 'username' => 'guest', 'password' => 'guest']);
Next the library will create a channel and we must declare a queue:
$connection->registerQueue('queue_name');
The method also have optional parameters like:
- $passive (true or false, default false),
- $durable (true or false, default false),
- $exclusive (true or false, default false),
- $auto_delete (true or false, default false) You can use these parameters like:
$connection->registerQueue('queue_name', false, true, false, false);
Also we can create an exchange like:
$connection->registerExchange('exchange_name', 'direct');
The method also have optional parameters like:
- $type ('direct', 'topic', 'fanout', 'header'),
- $passive (true or false, default false),
- $durable (true or false, default false),
- $auto_delete (true or false, default false) You can use these parameters like:
$connection->registerExchange('exchange_name', 'direct', true, true, false);
To check connection:
$connection->connectionStatus();
To send message:
$connection->sendMessage('queue_name', [message_body]);
You can create third parameter - 'exchange_name', if you need it.
To receive message:
$connection->receiveMessage('queue_name');
The method also have optional parameters like:
- $consumer_tag (default ''),
- $no_local (true or false, default false),
- $no_ack (true or false, default false),
- $exclusive (true or false, default false),
- $nowait (true or false, default false),
- $callback (default null, there could be an anonymous function or the name of an existing function) You can use these parameters like:
$connection->receiveMessage('queue_name', 'consumer_tag', true, false, true, 'my_function');
If you need to tell the exchange to send messages fron the queue, we can create the relationship between them like this:
$connection->queueBind('queue_name', 'exchange_name', 'routing_key');
If you need close channel and connection, use:
$connection->shutdown();
memcrab/queue 适用场景与选型建议
memcrab/queue 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 11.5k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 06 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「queue」 「php」 「rabbitmq」 「aws」 「sqs」 「lib」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 memcrab/queue 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 memcrab/queue 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 memcrab/queue 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Work with RabbitMQ in Laravel.
Microservice RPC through message queues.
PHP AMQP Binding Library
A Laravel package to monitor queue jobs.
Integrates php-amqplib with Symfony & RabbitMq. Formerly oldsound/rabbitmq-bundle.
Message queue statistics for OroPlatform
统计信息
- 总下载量: 11.5k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 22
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-06-15