您现在的位置是:首页 > PHP框架交流PHP框架交流
yii2 使用RabbitMQ mikemadisonweb/yii2-rabbitmq
上善若水2021-11-28 22:12:02【PHP框架交流】
3424人已围观
简介yii2 使用RabbitMQ,入门搭建RabbitMQ并使用一个简单的demo,前提 准备好RabbitMQ 一个yii2项目mq默认登录地址http://127.0.0.1:15672/默认账号密
yii2 使用RabbitMQ,入门搭建RabbitMQ并使用一个简单的demo,
前提 准备好RabbitMQ 一个yii2项目
mq默认登录地址http://127.0.0.1:15672/
默认账号密码 guest guest
1.安装扩展.
composer require mikemadisonweb/yii2-rabbitmq
2.配置RabbitMQ连接
打开config/console.php
components
中追加连接信息.
'components' => [
'cache' => [
'class' => 'yii\caching\FileCache',
],
'log' => [
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'db' => $db,
'rabbitmq' => [
'class' => \mikemadisonweb\rabbitmq\Configuration::class,
'connections' => [
[
// You can pass these parameters as a single `url` option: https://www.rabbitmq.com/uri-spec.html
'host' => '127.0.0.1',
'port' => '5672',
'user' => 'guest',
'password' => 'guest',
'vhost' => '/',
]
// When multiple connections is used you need to specify a `name` option for each one and define them in producer and consumer configuration blocks
],
],
],
注意端口号为5672 非web端登录的端口15672
3.编写一个生产者推送消息到队列中
class DemoProducerController extends Controller
{
const DEMO_PRODUCER = 'DEMO_PRODUCER';
const DEMO_ROUTING_KEY = 'DEMO_ROUTING_KEY';
const DEMO_ROUTING_KEY2 = 'DEMO_ROUTING_KEY2';
const DEMO_EXCHANGE = 'DEMO_EXCHANGE';
/**
* php yii demo-producer/index
*/
public function actionIndex()
{
/** @var \mikemadisonweb\rabbitmq\Configuration $rabbitmq */
$rabbitmq = \Yii::$app->rabbitmq;
/** @var \mikemadisonweb\rabbitmq\components\Producer $producer */
$producer = $rabbitmq->getProducer(self::DEMO_PRODUCER);
$msg = json_encode(['DEMO_ROUTING_KEY2插入随机数' . rand(1, 1000)]);
for($i=0;$i<100;$i++)
{
sleep(1);
$producer->publish($msg, self::DEMO_EXCHANGE, self::DEMO_ROUTING_KEY2);
}
}
}
4.配置一个交换机 配置一个队列 并将队列和交换机绑定
'producers' => [
[
'name' => 'DEMO_PRODUCER',
],
],
'exchanges' => [
[
'name' => 'DEMO_EXCHANGE',
'type' => 'direct'
],
],
'queues' => [
[
'name' => 'DEMO_QUEUES',
],
],
'bindings' => [
[
'queue' => 'DEMO_QUEUES',
'exchange' => 'DEMO_EXCHANGE',
'routing_keys' => ['DEMO_ROUTING_KEY','DEMO_ROUTING_KEY2'],
],
],
5.生产者发送推送消息
输入命令php yii demo-producer/index
向交换机推送数据.
可以看到已经小消息进来并且进入就绪状态 等待消费.
6.编写一个消费者
<?php
namespace app\commands\rabbitmq\consumer;
use mikemadisonweb\rabbitmq\components\ConsumerInterface;
use PhpAmqpLib\Message\AMQPMessage;
class DemoConsumer implements ConsumerInterface
{
/**
* @param AMQPMessage $msg
* @return int|mixed
*/
public function execute(AMQPMessage $msg)
{
var_dump($msg->getBody());
return ConsumerInterface::MSG_ACK;
}
}
6.绑定消费者回调消费
'bindings' => [
[
'queue' => 'DEMO_QUEUES',
'exchange' => 'DEMO_EXCHANGE',
'routing_keys' => ['DEMO_ROUTING_KEY','DEMO_ROUTING_KEY2'],
],
],
'consumers' => [
[
'name' => 'DEMO_CONSUMER',
// Every consumer should define one or more callbacks for corresponding queues
'callbacks' => [
// queue name => callback class name
'DEMO_QUEUES' => app\commands\rabbitmq\consumer\DemoConsumer::class,
],
],
],
7执行消费命令
php yii rabbitmq/consume DEMO_CONSUMER
成功消费,至此 RabbitMQ 简单使用完成.
Tags: RabbitMQ
很赞哦! (1)
相关文章
随机图文
十个笑话分享给大家,哪个逗笑你了
去医院体检,医生拿着我的报告单说:“幸亏你来的早啊”。吓出一声冷汗之后,医生不慌不忙:再晚点,我就下班了…… 老师问: 你约了心仪的女孩子吃晚餐,当你要去厕所时,该怎麼礼貌地说?同学A: 我去撇个尿! 老师: 这一点都不礼貌。同学B: 我去上个厕所,等等回来。老师: 嗯,这个不错,但还有更礼貌的。同学C: 容我离开一下。我去跟一个好朋友见个面。如果可以的话,我更希望今天晚上有机会介绍他给你认识经典五条笑话,笑到肚子疼!
1.老夫妇去拍照,摄影师问:“大爷,您是要侧光,逆光,还是全光?',大爷腼腆的说:“我是无所谓,能不能给你大妈留条裤衩?'2.两个饺子结婚了,送走客人后新郎回到卧室,竟发现床上躺着一个肉丸子!新郎大惊,忙问新娘在哪?肉丸子害羞的说:讨厌,人家脱了衣服你就不认识啦!3.四只老鼠吹牛:甲:我每天都拿鼠药当糖吃;乙:我一天不踩老鼠夹脚发痒;丙:我每天不过几次大街不踏实;丁:时间不早了,回家抱猫去哄老婆开心的笑话,爆笑小笑话,逗女友开心
1、开学第一天我就把同桌打了一顿,老师说要我叫家长。我说:没事,我自己一个人就能打赢他!2、一同学发说说:“请问一下,学校军训的枪是自己带还是学校发啊?在线等。。。”我在下面回复道:“都是自己带的,我家没有,你家要是枪多的话,帮我带一把!”3、老婆不知为何突然生气骂我,我哄了半天她才冷静下来问:“你现在知道你错在哪里了吗?”我怒道:“你什么意思?难道我没有错就不能被你骂了?”4、晚上和Thinkphp6定时执行 tp6如何使用定时执行脚本
Thinkphp6如何定时执行代码,tp6如何使用定时执行脚本,composer支持tinkphp6定时组件框架有哪些,在项目中经常会使用到定时脚本执行,但是相比较于laravel框架而言,think