xiaosongshu / yii2-rabbitmq
A queue client for yii with rabbitmq !
v1.0.0
2024-04-24 09:15 UTC
Requires
- php: >=7.4.1
- ext-json: *
- php-amqplib/php-amqplib: 3.2.*
- phpseclib/phpseclib: ^3.0
README
安装方法 install
composer require xiaosongshu/yii2-rabbitmq
示例 demo
定义一个队列 queue
<?php namespace app\commands; require_once __DIR__.'/vendor/autoload.php'; class Demo extends \Xiaosongshu\Rabbitmq\Client { /** 以下是rabbitmq配置 ,请填写您自己的配置 */ /** @var string $host 服务器地址 */ public static $host = "127.0.0.1"; /** @var int $port 服务器端口 */ public static $port = 5672; /** @var string $user 服务器登陆用户 */ public static $user = "guest"; /** @var string $pass 服务器登陆密码 */ public static $pass = "guest"; /** * 业务处理 * @param array $params * @return int */ public static function handle(array $params): int { //TODO 这里写你的业务逻辑 // ... var_dump($params); return self::ACK; //return self::NACK; } }
投递消息 publish
\app\commands\Demo::publish(['name'=>'tome','age'=>15]);
你可以在任何地方投递消息。
开启消费
\app\commands\Demo::consume();
你可以把消费者放到command命令行里面,使用命令行执行队列消费。举个例子:
<?php namespace app\commands; use yii\console\Controller; /** * @purpose 开启队列消费 * @note 我只是一个例子 */ class QueueController extends Controller { /** * @api php yii queue/index * @return void * @throws \Exception * @comment 开启消费者 */ public function actionIndex() { Demo::consume(); } }
开启消费者命令 consume
php yii queue/index
异常 Exception
队列使用过程中请使用 \RuntimeException和\Exception捕获异常