×

Docker搭建RabbitMQ
  

marco 6951人觉得有帮助

{{ttag.title}}
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 \rabbitmq: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/


5、输入账号密码并登录 admin admin
6、创建帐号并设置其角色为管理员 resty resty


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


8、点击 resty 用户进入用户配置页面
9、给 resty 用户配置该虚拟host的权限


10、至此,RabbitMQ的安装和配置完成
RabbitMQ的消息模型





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!'\n";    $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\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();    }}
    在终端中,运行发布者(发件人)
    > docker exec -it dnmp-php72 sh -c "php /var/www/iot.tinywan.com/mq_send.php" [x] Sent 'Hello World!'
  • 打赏鼓励作者,期待更多好文!

    打赏
    1人已打赏

    marco 发表于 2020-12-12 19:29
      
    感谢分享
    暗夜星空 发表于 2021-1-18 09:57
      
    多谢分享
    发表新帖
    热门标签
    全部标签>
    安全效果
    每日一问
    西北区每日一问
    技术笔记
    技术盲盒
    【 社区to talk】
    干货满满
    新版本体验
    标准化排查
    信服课堂视频
    技术咨询
    产品连连看
    每周精选
    功能体验
    自助服务平台操作指引
    排障那些事
    GIF动图学习
    技术晨报
    安装部署配置
    运维工具
    解决方案
    2023技术争霸赛专题
    秒懂零信任
    故障笔记
    技术圆桌
    云计算知识
    用户认证
    技术顾问
    资源访问
    存储
    技术争霸赛
    「智能机器人」
    以战代练
    社区新周刊
    畅聊IT
    答题自测
    专家问答
    在线直播
    MVP
    网络基础知识
    升级
    安全攻防
    上网策略
    测试报告
    日志审计
    问题分析处理
    流量管理
    每日一记
    原创分享
    sangfor周刊
    VPN 对接
    项目案例
    SANGFOR资讯
    专家分享
    信服故事
    SDP百科
    功能咨询
    终端接入
    授权
    设备维护
    地址转换
    虚拟机
    迁移
    加速技术
    排障笔记本
    产品预警公告
    玩转零信任
    信服圈儿
    S豆商城资讯
    追光者计划
    深信服技术支持平台
    社区帮助指南
    答题榜单公布
    纪元平台
    通用技术
    卧龙计划
    华北区拉练
    天逸直播
    山东区技术晨报
    文档捉虫活动
    齐鲁TV
    华北区交付直播
    2024年技术争霸赛
    北京区每日一练
    场景专题
    高手请过招
    升级&主动服务
    高频问题集锦
    POC测试案例
    全能先锋系列
    云化安全能力

    本版版主

    12
    185
    6

    发帖

    粉丝

    关注

    121
    313
    351

    发帖

    粉丝

    关注

    本版达人

    LoveTec...

    本周分享达人

    新手24116...

    本周提问达人