dojiland/amqp-laravel
Composer 安装命令:
composer require dojiland/amqp-laravel
包简介
PHP RabbitMQ client for Laravel && Lumen
README 文档
README
基于 php-amqplib / php-amqplib 针对 Laravel && Lumen 框架封装 Rabbitmq 的调用方法,方便业务开发.
Setup
本地先安装 composer, 执行以下命令加载库:
composer require dojiland/amqp-laravel
创建配置文件,执行生成 config/amqp.php 配置文件:
php artisan amqp:init
.env 添加 AMQP 配置项:
AMQP_HOST=localhost
AMQP_PORT=5672
AMQP_USER=guest
AMQP_PASSWORD=guest
Laravel
Laravel 版本 >= 5.5, 会自动 package-discover,无需操作.
less than 5.5 add this to the providers array in config/app.php
Dojiland\Amqp\AmqpServiceProvider::class
Lumen
add this in bootstrap/app.php
$app->register(Dojiland\Amqp\AmqpServiceProvider::class);
Usage
PS: 目前只限制使用 Fanout Exchange, 默认配置使用消息持久化和ACK.
注册消费异常回调
在某个初始化过程中,调用如下代码,实现自己的消费失败回调逻辑,
如 app/Providers/AppServiceProvider 的 boot 方法,增加 sentry 通知。
/**
* 含义说明
* $context = [
* // amqp exchange
* 'exchange' => '',
* // amqp queue
* 'queue' => '',
* // amqp body (业务消息文本)
* 'payload' => '',
* ]
*/
// amqp 消费异常上报
\Dojiland\Amqp\Events\AmqpEvent::registerConsumeFailedListener(function (\Throwable $e, array $context) {
app('sentry')->captureException($e);
// ...
});
Publish
<?php
/**
* 单条信息发送
* string $exchange: RabbitMQ exchange 名称
* array $params: 一维参数数组
* bool $persistent: 消息持久化标识,默认true(持久化)
*/
...
app('amqp')->publish(string $exchange, array $params, bool $persistent = true);
...
/**
* 批量消息发送
* string $exchange: RabbitMQ exchange 名称
* array $params: 二维参数数组
* bool $persistent: 消息持久化标识,默认true(持久化)
*/
...
app('amqp')->batchPublish(string $exchange, array $params, bool $persistent = true);
...
Subscribe
创建指定订阅者,执行命令
php artisan make:amqp ExampleSubscribe
创建 app\MessageQueue\ExampleSubscribe.php
文件(若MessageQueue文件夹不存在会默认生成).
/**
* 订阅的exchange.
* @var string
*/
protected $exchange = '';
/**
* 订阅的queue.
*
* @var string
*/
protected $queue = '';
/**
* 监听消息回调处理
*
* @return void
*/
public function callback(AMQPMessage $msg)
{
echo $msg->body;
}
填写指定的 exchange 和 queue, 并在 callback 里添加消费逻辑.
amqp.php 添加订阅对象配置项:
/*
|--------------------------------------------------------------------------
| 订阅消费类列表
|--------------------------------------------------------------------------
|
*/
'subscribes' => [
\App\MessageQueue\ExampleSubscribe::class,
]
执行命令 php artisan amqp, 启动消费进程.
dojiland/amqp-laravel 适用场景与选型建议
dojiland/amqp-laravel 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 614 次下载、GitHub Stars 达 3, 最近一次更新时间为 2021 年 02 月 01 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「rabbitmq」 「AMQP」 「laravel」 「lumen」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 dojiland/amqp-laravel 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 dojiland/amqp-laravel 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 dojiland/amqp-laravel 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Queue
Work with RabbitMQ in Laravel.
Microservice RPC through message queues.
PHP AMQP Binding Library
The Listener component of the RabbitEvents library.
The Publisher component of the RabbitEvents package.
统计信息
- 总下载量: 614
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 8
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-02-01