docker 安装rabbitmq并配置hyperf使用

这篇具有很好参考价值的文章主要介绍了docker 安装rabbitmq并配置hyperf使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里我想完成的是
制作消息(多个协程制造)——》推送到rabbitmq——》订阅消息队列——》消费消息(ws协程客户端【一次消费多条】/ws前端)
利用 WebSocket 协议让客户端和服务器端保持有状态的长链接,保存链接上来的客户端 id。订阅发布者发布的消息针对已保存的客户端 id 进行广播消息。

一,安装rabbitmq

  • pull镜像
docker search rabbitmq
docker pull rabbitmq
  • 构建rabbitmq容器并加入hyperf环境组网
    这里我们构建容器的的就将他加入到了hyperf环境的网络lnmp_default(使用docker inspect hyperf 查看)
docker run -d --network=lnmp_default --hostname my-rabbit --name rabbit -p 15672:15672 -p 5673:5672 rabbitmq
-d 后台运行容器;

--name 指定容器名;

-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);

-v 映射目录或文件;

--network 网络名称
 
--hostname  主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);

-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;

RABBITMQ_DEFAULT_PASS:默认用户名的密码)
  • 进入容器并运行
docker exec -it rabbit /bin/bash
rabbitmq-plugins enable rabbitmq_management

这里须要修改配置文件,不然有的地方会报错 docker rabbitmq Management API returned status code 500

cd /etc/rabbitmq/conf.d/
echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf

用户名和密码 guest
docker 安装rabbitmq并配置hyperf使用,hyperf,docker,rabbitmq,容器

二,rabbitmq配置

生成配置文件 php bin/hyperf.php vendor:publish hyperf/amqp
并修改配置文件,这里的AMQP_HOST 就是lnmp_default 网络组中 rabbitmq的ip地址,可使用docker inspect rabbit 查看,端口即为容器内部映射ip这里默认是5672

三,测试代码

php bin/hyperf.php gen:amqp-producer DemoProducer
  • 生产者
<?php

declare(strict_types=1);

namespace App\Amqp\Producer;

use Hyperf\Amqp\Annotation\Producer;
use Hyperf\Amqp\Message\ProducerMessage;
use function Hyperf\Coroutine\co;

//routingKey是指定路由到哪里,可以决定到哪个队列。队列通过路由键绑定到交换器
#[Producer(exchange: 'hyperf', routingKey: 'hyperf-queue.sj')]
//生产者方指定了exchange(交换机)和routing key,但是不指定queue(队列)也不将queue(队列)绑定到exchange,
//队列声明和绑定队列到exchange的工作由消费者方完成
//费者在消费消息时,需要声明队列(队列名字随便),并将声明的队列通过routing key绑定到exchange,这样才能接收到数据
class DemoProducer extends ProducerMessage
{
    public function __construct($id)
    {

                $pdata['id']=$id;
                $pdata['time']=date("Y-m-d H:i:s",time());
                $pdata['name']=array_rand(['张三','李四','王虎','陆风','牛犇','冯晨','丁酉','郑和']);;
                $pdata['say']=bin2hex(random_bytes(10));
                $pdata['score']=array_rand(['61','80','75','77','99','88','97','81']);
                $this->payload = $pdata;

    }
}

  • 消费者
<?php

declare(strict_types=1);

namespace App\Amqp\Consumer;

use Hyperf\Amqp\Result;
use Hyperf\Amqp\Annotation\Consumer;
use Hyperf\Amqp\Message\ConsumerMessage;
use PhpAmqpLib\Message\AMQPMessage;

#[Consumer(exchange: 'hyperf', routingKey: 'hyperf-queue.sj', queue: 'hyperf', name: "DemoConsumer", nums: 1)]
class DemoConsumer extends ConsumerMessage
{
    public function consumeMessage($data, AMQPMessage $message): Result
    {
        print_r($data);
        return Result::ACK;
    }
}

  • 控制器
 public function productMessage()
    {


        try {
        	//这里使用协程创建100条消息
            $wg = new \Hyperf\Coroutine\WaitGroup();
            $wg->add(100);
            for($i=0;$i<100;$i++){
                //创建协程
                co(function () use ($wg){
                    $message=new DemoProducer(1);
                    //获取一个生产者实例
                    $producer = ApplicationContext::getContainer()->get(Producer::class);
                    //传递消息
                    $producer->produce($message);
                    $wg->done();
                });
            }
            $wg->wait();



        } catch (\Exception $exception) {
            throw new \Swoole\Exception($exception->getMessage());
        }
        return [
            'info' => "100条消息创建成功",
        ];
    }

docker 安装rabbitmq并配置hyperf使用,hyperf,docker,rabbitmq,容器

保存后重启服务 php hyperf.php start ,定义的消费者会自动消费,详见文档。

docker 安装rabbitmq并配置hyperf使用,hyperf,docker,rabbitmq,容器
ps:这里有个小问题时间不对。这里实际上在composer hyperf的时候第一步就是可以设置时区Asia/Shanghai
都是我没设置,现在可以偷个懒在入口文件添加 date_default_timezone_set(‘Asia/Shanghai’); 即可。(或修改php.ini)文章来源地址https://www.toymoban.com/news/detail-838714.html

到了这里,关于docker 安装rabbitmq并配置hyperf使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker安装常用的容器,包括MySQL,Redis,RabbitMQ,MongoDB,FDFS等

    首先安装docker 依赖库 添加docker ce的软件源信息,自行选择,可添加可不添加,如果不是阿里云或者腾讯云的,请还是添加一下吧 安装docker docker -v --查看docker版本 docker images --查看当前docker运行 sudo systemctl start docker --启动docker 在虚拟机里边 docker images --有时候权限不足 我们

    2024年02月11日
    浏览(63)
  • docker--在Anaconda jupyter 容器中使用oracle数据源时,Oracle客户端安装配置及使用示例

    将instantclient-basic-linux.x64-11.2.0.4.0.zip解压至/home/jupyter/oracle/ 将instantclient-sqlplus-linux.x64-11.2.0.4.0.zip解压/home/jupyter/oracle/【可选,提供sqlplus命令】 复制【操作系统一般都有安装libaio.so】 cp /usr/lib64/libaio.so.1 /home/jupyter/oracle/instantclient_11_2/ ln -s /home/jupyter/oracle/instantclient_11_2/libcln

    2024年02月07日
    浏览(47)
  • Docker 容器学习笔记以及安装配置

    容器的由来 早先,虚拟机通过操作系统实现相互隔离,保证应用程序在运行时相互独立,避免相互干扰。但是操作系统又笨又重,耗费资源严重: 容器技术只隔离应用程序的运行时环境但容器之间共享同一个操作系统,这里的运行时环境指的是程序运行依赖的各种库以及配

    2024年02月09日
    浏览(37)
  • 1.安装 docker 容器并配置镜像加速器

    1.2.1 实验环境准备 实验环境: rockylinux8.8    可以去官网下载 下载 Rocky | Rocky Linux 主机名: xuegod63 主机 ip: 192.168.1.63(这个 ip 大家可以根据自己所在环境去配置,配置成静态 IP) 2g 内存、2vCPU、50G 硬盘 1、配置静态 ip 和主机名 1)把 ip 配置成静态的 配置文件 /etc/sysconfig/

    2024年02月07日
    浏览(52)
  • docker 安装启动 nginx 修改配置资源容器端口

    可以先查看docker下是否存在nginx镜像,使用如下这些命令查看: docker images: 列出所有镜像。 docker images nginx: 列出所有nginx镜像,不同版本等等。 docker search nginx: 搜索查看所有nginx镜像信息。 使用 pull 命令拉取nginx镜像: 出现以下内容,等待下载完成即可: 下载完成nginx镜像后

    2024年02月07日
    浏览(52)
  • docker容器安装jupyter notebook(安装、配置、修改全过程)

    Docker hub官网查找自己想要的docker image https://hub.docker.com/ 例如,本文使用miniconda3的lastest版本: 使用命令拉取镜像: 其中-p为端口映射,a:b,a为宿主机端口,b为容器内部端口。 其中宿主机的一个端口只能映射到容器内部的某一个端口上        比如:8080-80之后,就不能808

    2024年02月05日
    浏览(45)
  • 【2023最新版】Win11: WSL(Ubuntu22.04)使用docker远程容器教程(Windows的Docker Desktop下载安装、迁移到非系统盘、配置国内镜像源、设置 WSL2)

    目录 一、准备工作 1. 安装WSL(适用于 Linux 的 Windows 子系统) 2. docker简介——来源chatGPT 二、Windows安装 Docker Desktop 1. 官网链接 2. 安装过程 3. 迁移到非系统盘 4. 配置国内镜像源 国内镜像 方法1——通过Docker-Desktop配置 方法2——找打daemon.json文件进行配置 三、在适用于 Wind

    2024年02月12日
    浏览(84)
  • 使用Docker容器配置ssh服务,远程直接进入容器

    最终版 hub仓库 https://hub.docker.com/ 目录 hub仓库 docker命令 镜像 查看所有镜像 运行镜像 容器 查看所有容器 可以在当前终端挂载 停止容器 删除容器s 使用容器 Docker使用镜像配置ssh服务后用ssh登陆 1. 先上dockerhub上pull一个需要的镜像下来,然后run这个镜像生成一个容器。 2. 进入

    2024年02月08日
    浏览(44)
  • 使用Docker安装部署RabbitMQ

    介绍 RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。RabbitMQ官方地址:http://www.rabbitmq.com docker安装的优点 一般情况,需要先安装部署Erlang环境再

    2024年02月10日
    浏览(40)
  • docker基本操作:安装部署、设置ssh远程登入、配置docker镜像文件并创建docker容器

    Docker 是一个流行的应用程序容器化和部署平台,允许开发人员轻松地创建、部署和管理容器中的应用程序。 请注意运行此命令需要 root 或 sudo 权限,因此可能需要在命令前加上 sudo 并输入密码。 一、更新系统工具(ubuntu) 安装docker 查看docker版本 启动docker服务 二、一些基本

    2024年02月04日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包