rabbitMq认识及应用(php)

https://www.1024.cn

rabbitMq(消息队列)

  1. 一种程序对程序的通信方法
  2. 实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)
  3. erlang编写
  4. 特性:
    ①可伸缩性:集群服务
    ② 消息持久化:从内存持久化消息到硬盘,再从硬盘加载到内存
  5. AMQP:典型的“生产/消费”消息模型
    amqp模型

AMQP扩展安装

  1. 根据phpinfo()查看版本等
    • php版本
    • 32位还是64位
    • 线程是否激活
      在这里插入图片描述
  2. 下载amqp,地址:https://pecl.php.net/package/amqp
    在这里插入图片描述
    在这里插入图片描述
  3. 将php_amqp.dll文件放到 php 目录下的ext文件夹下面
  4. 然后,再将 rabbitmq.4.dll (有些是rabbitmq.1.dll )文件放到 php 根目录下
  5. 然后,在 php.ini 最后加extension=php_amqp.dll
    在这里插入图片描述
  6. 重启apache
    在这里插入图片描述
  7. 安装erlang(rabbitmq 服务端代码是使用并发式语言Erlang编写),下载地址:http://www.erlang.org/downloads (根据电脑系统版本 64/32)
  8. 安装好之后,要配置一下环境变量:此电脑–>鼠标右键“属性”–>高级系统设置–>环境变量–>“新建”系统环境变量
    在这里插入图片描述
    在这里插入图片描述
  9. 最后 windows键+R键,输入 cmd,再输入erl,看到版本号,就说明erlang安装成功了
    在这里插入图片描述
  10. 安装 RabbitMQ,下载地址https://www.rabbitmq.com/download.html
    在这里插入图片描述
  11. 双击安装,再安装RabbitMQ-Plugins。打开命令行,cd切换到rabbitmq 的 sbin目录。
    我的目录是:D:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.17\sbin ,然后在后面输入rabbitmq-plugins enable rabbitmq_management命令进行安装。
    在这里插入图片描述
  12. 打开网址:http://localhost:15672 用上面的账号和密码登陆进去

php测试

  1. php-amqplib 这个封装好的类库,添加composer.json文件
{
    "require": {
        "php-amqplib/php-amqplib":"2.6.1"
    }
}
  1. send.php(生产)
<?php
    require_once __DIR__ . '/vendor/autoload.php';

    use PhpAmqpLib\Connection\AMQPStreamConnection;
    use PhpAmqpLib\Message\AMQPMessage;

    $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
    $channel = $connection->channel();

    $channel->queue_declare('hello', false, false, false, false);
    $msg = new AMQPMessage('Hello World!');
    $channel->basic_publish($msg, '', 'hello');
    echo " [x] Sent 'Hello World!'\n";

    $channel->close();
    $connection->close();
  1. recv.php (消费)
<?php
require_once __DIR__ . '/vendor/autoload.php';

use PhpAmqpLib\Connection\AMQPStreamConnection;


$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare('hello', false, false, false, false);
echo ' [*] Waiting for messages. To exit press CTRL+C', "\n";
$callback = function($msg) {
    echo " [x] Received ", $msg->body, "\n";
};
$channel->basic_consume('hello', '', false, true, false, false, $callback);
while(count($channel->callbacks)) {
    $channel->wait();
}

$channel->close();
$connection->close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值