在 Yii2 中使用 RabbitMQ 扩展来监听和发送消息,你需要进行以下步骤:
安装扩展:使用 Composer 安装
yiisoft/yii2-queue
扩展。composer require yiisoft/yii2-queue
配置组件:打开
config/main.php
文件,配置 RabbitMQ 组件。return [ 'components' => [ 'queue' => [ 'class' => 'yii\queue\amqp_interop\Queue', 'host' => 'localhost', 'port' => 5672, 'user' => 'guest', 'password' => 'guest', 'queueName' => 'your_queue_name', ], ], ];
创建消费者:创建一个继承自
yii\queue\cli\LoopInterface
的类,用于监听和处理消息。namespace app\commands; use yii\console\ExitCode; use yii\queue\cli\Action; use yii\queue\cli\LoopInterface; class MyConsumer extends Action implements LoopInterface { public function run($queue) { $this->repeat('processMessage', [$queue]); } public function processMessage($queue) { $message = $queue->receive(); // 处理接收到的消息 echo "Received message: " . $message . "\n"; $queue->acknowledge($message); } public function loopSleep() { sleep(1); return true; } }
启动监听器:使用 Yii2 的命令行工具来启动监听器。
yii queue/listen
或者在控制器中启动监听器。
Yii::$app->queue->run(new MyConsumer());
发送消息:在需要发送消息的地方,使用 Yii2 的依赖注入或直接实例化
yii\queue\Queue
组件来发送消息。use Yii; use yii\queue\Queue; /** @var Queue $queue */ $queue = Yii::$app->queue; $queue->push(new MyJob(['param' => 'value']));
以上步骤介绍了使用 Yii2 和 RabbitMQ 扩展来监听和发送消息的基本流程。你还可以根据自己的需求进一步扩展和配置。关于 Yii2 队列的更多详细信息,请查阅官方文档