docker安装rabbitmq并配置hyperf使用

简介: 通过以上步骤,您可以实现在Docker容器中安装和配置RabbitMQ,并在PHP的Hyperf框架中进行集成和使用。这种方式为开发者提供了快速部署并实现消息队列解决方案的能力,同时维持了环境与生产环境的一致性,从而为开发高效的分布式应用程序提供了便利。

为满足您的高标准需求,我将分步骤为您详细解释如何通过Docker安装RabbitMQ服务器,并展示如何配置PHP的Hyperf框架来使用RabbitMQ。

安装RabbitMQ:

  1. 获取RabbitMQ镜像在终端中运行以下命令来拉取RabbitMQ的官方Docker镜像:

    docker pull rabbitmq:management
    

    这里我们使用带有 management标签的镜像,因为它包含了RabbitMQ管理插件,此插件可以通过Web UI来管理和查看RabbitMQ的状态。

  2. 运行RabbitMQ容器使用以下命令来创建并启动一个RabbitMQ容器实例:

    docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
    

    这条命令会将容器的5672端口(RabbitMQ服务器端口)和15672端口(Web管理界面端口)映射到宿主机上的相同端口。

  3. 设置RabbitMQ用户为了增强安全性,我们需要设置RabbitMQ的用户名和密码,您可以通过以下命令进入RabbitMQ容器,并使用RabbitMQ的命令行工具来创建新用户、设置密码以及配置相应的权限:

    docker exec -it rabbitmq bash # 进入RabbitMQ容器
    rabbitmqctl add_user myuser mypassword # 添加新用户
    rabbitmqctl set_permissions -p / myuser ".*" ".*" ".*" # 配置用户权限
    rabbitmqctl set_user_tags myuser administrator # 设置用户的角色
    

    这些命令创建了一个名为 myuser的用户,并为其设置了 mypassword密码和管理员权限。

  4. 访问RabbitMQ管理界面
    打开您的浏览器并导航到 http://localhost:15672,您可以使用步骤3中设置的用户名和密码登录到RabbitMQ的管理界面。

配置Hyperf使用RabbitMQ:

  1. 安装Hyperf及其组件假设您已经有一个Hyperf项目,您需要安装 hyperf/amqp扩展来使Hyperf支持AMQP协议,从而可以与RabbitMQ进行交互。

    composer require hyperf/amqp
    
  2. 配置 .env文件在您的Hyperf项目根目录中找到 .env文件,并设置与RabbitMQ容器对应的AMQP连接信息:

    AMQP_HOST=localhost
    AMQP_PORT=5672
    AMQP_USER=myuser
    AMQP_PASS=mypassword
    AMQP_VHOST=/
    
  3. 配置 config/autoload/amqp.php在Hyperf项目的 config/autoload目录下编辑(或创建)amqp.php配置文件,以匹配您的RabbitMQ连接设置:

    <?php
    return [
        'default' => [
            'host' => env('AMQP_HOST', 'localhost'),
            'port' => (int) env('AMQP_PORT', 5672),
            'user' => env('AMQP_USER', 'myuser'),
            'password' => env('AMQP_PASS', 'mypassword'),
            'vhost' => env('AMQP_VHOST', '/'),
            // 其他配置...
        ],
    ];
    
  4. 创建生产者和消费者
    按照Hyperf的官方文档创建消息生产者(Publisher)和消费者(Consumer)类。生产者负责向特定的队列发送消息,而消费者则负责接收消息并进行处理。

验证:

通过您的Hyperf应用来发布一个消息,并检查RabbitMQ管理界面的Queues部分,查看消息是否已成功进入队列。同样地,启动Hyperf消费者服务,你应该能看到消费者从队列中获取并处理消息。

通过以上步骤,您可以实现在Docker容器中安装和配置RabbitMQ,并在PHP的Hyperf框架中进行集成和使用。这种方式为开发者提供了快速部署并实现消息队列解决方案的能力,同时维持了环境与生产环境的一致性,从而为开发高效的分布式应用程序提供了便利。

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
7月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
5月前
|
关系型数据库 数据库 PostgreSQL
docker 安装 Postgres 17.6
本文介绍如何通过Docker安装和配置PostgreSQL 17.6。内容包括拉取镜像、导出配置文件、运行容器并挂载数据与配置文件目录,以及进入容器使用psql操作数据库的完整步骤,便于持久化管理和自定义配置。
734 3
docker 安装 Postgres 17.6
|
4月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
628 5
|
4月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
458 2
|
7月前
|
Linux Docker Windows
windows docker安装报错适用于 Linux 的 Windows 子系统必须更新到最新版本才能继续。可通过运行 “wsl.exe --update” 进行更新。
适用于 Linux 的 Windows 子系统需更新至最新版本(如 wsl.2.4.11.0.x64.msi)以解决 2025 年 Windows 更新后可能出现的兼容性问题。用户可通过运行 “wsl.exe --update” 或访问提供的链接下载升级包进行更新。
2896 0
|
7月前
|
消息中间件 数据管理 Serverless
阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025
阿里云消息团队基于 Apache RocketMQ 构建 Serverless 消息系统,适配多种主流消息协议(如 RabbitMQ、MQTT 和 Kafka),成功解决了传统中间件在可伸缩性、成本及元数据管理等方面的难题,并据此实现 ApsaraMQ 全系列产品 Serverless 化,助力企业提效降本。
|
5月前
|
消息中间件 Java Kafka
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
本文深入解析了 Kafka 和 RabbitMQ 两大主流消息队列在 Spring 微服务中的应用与对比。内容涵盖消息队列的基本原理、Kafka 与 RabbitMQ 的核心概念、各自优势及典型用例,并结合 Spring 生态的集成方式,帮助开发者根据实际需求选择合适的消息中间件,提升系统解耦、可扩展性与可靠性。
383 1
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
965 89