php 安装rabbitmq拓展_Docker搭建RabbitMQ

本文详细介绍了如何在Docker中安装RabbitMQ,包括拉取镜像、启动镜像、设置控制台用户和密码,以及验证安装成功。同时,文章还讲解了RabbitMQ的消息模型,并提供了在PHP环境中安装php-amqplib扩展的方法,以及消息发布者和接收者的代码示例。
摘要由CSDN通过智能技术生成

RabbitMQ

RabbitMQ是一个被广泛使用的开源消息队列。它是轻量级且易于部署的,它能支持多种消息协议。RabbitMQ可以部署在分布式和联合配置中,以满足高规模、高可用性的需求。

RabbitMQ的安装和使用

1、查找镜像

docker search rabbitmq

2、拉取镜像

docker pull rabbitmq:3.7.16-management

默认情况下,会拉取rabbitmq的latest版本。这里拉取 Web浏览器管理页面的tag 3.7.16-management

3、启动镜像

docker run -p 15672:15672  -p  5672:5672 -d --hostname dnmp-rabbitmq --name dnmp-rabbitmq --network dnmp_backend -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin abbitmq:3.7.16-management

参数解释

  • 15672 :表示 RabbitMQ 控制台端口号,可以在浏览器中通过控制台来执行 RabbitMQ 的相关操作。
  • 5672: 表示 RabbitMQ 所监听的 TCP 端口号,应用程序可通过该端口与 RabbitMQ 建立 TCP 连接,完成后续的异步消息通信
  • RABBITMQ_DEFAULT_USER:用于设置登陆控制台的用户名,这里我设置 admin
  • RABBITMQ_DEFAULT_PASS:用于设置登陆控制台的密码,这里我设置 admin容器启动成功后,可以在浏览器输入地址:http://ip:15672/访问控制台

4、访问地址查看是否安装成功:http://127.0.0.1:15672/

f645e557960771d95872ec430b049987.png

5、输入账号密码并登录 admin admin

6、创建帐号并设置其角色为管理员 resty resty

a5f0d4268baa8ae31f90fd65ff27b996.png

7、创建一个新的虚拟host为 resty

bd1a24f41fb9567d4dcc4ec27737f6c6.png

8、点击 resty 用户进入用户配置页面

9、给 resty 用户配置该虚拟host的权限

f083362a86dbf219b328466bbb640713.png

10、至此,RabbitMQ的安装和配置完成

RabbitMQ的消息模型

7bd89c5547bd860d6f27638658f0db39.png
a0075ac2f1cbc6e56896f6c6e68dfadc.png

PHP 客户端库

以下以ThinkPHP5.1 框架为测试环境

安装扩展库 php-amqplib

docker run --rm --interactive --tty -v e:/dnmp/www/iot.tinywan.com:/app composer require php-amqplib/php-amqplib v2.9.0 --ignore-platform-reqs 

消息发布者(发送者)

mq_send.php 脚本

#!/usr/bin/env php<?phpnamespace think;define('APP_PATH', __DIR__ . '/application/');require __DIR__ . '/thinkphp/base.php';Container::get('app',[APP_PATH])->bind('http/RabbitMq/send')->run()->send();

业务代码

public function send(){    $connection = new AMQPStreamConnection('dnmp-rabbitmq', 5672,     'admin', 'admin');    $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!'";    $channel->close();    $connection->close();}

注意

1、 user和 password就是docker启动时候的 RABBITMQ_DEFAULT_USER=admin和 RABBITMQ_DEFAULT_PASS=admin。前面我们设置的 admin和admin 2、连接主机host是dnmp-rabbitmq,由于是在docker容器之内

在终端中,运行消费者(接收者)

> docker exec -it dnmp-php72 sh -c "php /var/www/iot.tinywan.com/mq_receive.php" [*] Waiting for messages. To exit press CTRL+C [x] Received Hello World! [x] Received Hello World! [x] Received Hello World! [x] Received Hello World!

消息接收者(发送者)

mq_receive.php脚本

#!/usr/bin/env php<?phpnamespace think;define('APP_PATH', __DIR__ . '/application/');require __DIR__ . '/thinkphp/base.php';Container::get('app',[APP_PATH])->bind('http/RabbitMq/receive')->run()->send();

业务代码

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

在终端中,运行发布者(发件人)

> docker exec -it dnmp-php72 sh -c "php /var/www/iot.tinywan.com/mq_send.php" [x] Sent 'Hello World!'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值