您现在的位置是:首页 > PHP框架交流PHP框架交流
yii2 使用RabbitMQ mikemadisonweb/yii2-rabbitmq
上善若水2021-11-28 22:12:02【PHP框架交流】 3299人已围观
简介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)
相关文章
随机图文
-
逗女孩开心的笑话,哄女陔开心的笑话
1.同学看上了一姑娘实在太好了,经过一番激烈的思想斗争,终于出手了。同学:阿姨,你好!妈妈:恩……同学:是这样的,我想认识您女儿。妈妈:这是我儿媳妇。2.今天我从我15岁的女儿电脑上搜出来一部A片,藏在'未来的职业'文件夹里,未来的职业!未来的职业!未来的职业!3.学校门口有两个水果摊,一女生在A摊买香蕉,挑的时候不停用手捏香蕉,估计是看熟不熟。这时B摊的小贩说:同学,到我这边买,我这边 -
速卖通官方sdk composer扩展包安装
由于速卖通官方有给我们提供扩展包,但是没有提供直接composer安装,导致使用起来有些不方便,由于官方提供的扩展包没有命名空间概念,就使用classmap自动加载方式制作成扩展包,这样不需要额外做任 -
linux centos 安装jenkins
centos 安装jenkins,我们都知道一般项目都是运行再服务器里面,我们本地的window可能和生产环境不一样,着手对centos安装jenkins. 1.jenkins是java开发的运行必须 -
php技术提升心得与方法
现在的PHP市场虽然充斥了大量的的PHP开发人员,但这些人当中真正能称得上高手的却寥寥无几。很多公司虽然招聘了一些PHP开发人员,但是由于技术水平不高,导致公司的项目一直堆积。这不仅另公司无奈也让已经入职的PHP开发人员着急,他们也想要在PHP领域更近一步,但却苦于找不到提高自己的方法,下面我们的鸥仔收集了一些PHP大神的一些工作方式、习惯,让大家看看PHP大神们是如何工作,也希望这些方法能帮助到那些想要在PHP领域更近一步的人。