PHP集成RabbitMQ开发(一)

928 阅读3分钟

消息系统允许软件应用相互连接和扩展.这些应用可以相互链接起来组成一个更大的应用,或者将用户设备和数据进行连接.消息系统通过将消息的发送和接收分离来实现应用程序的异步和解偶.

或许你正在考虑进行数据投递,非阻塞操作或推送通知。或许你想要实现发布/订阅,异步处理,或者工作队列。所有这些都属于消息系统的模式。

RabbitMQ是一个消息代理 - 一个消息系统的媒介。它可以为你的应用提供一个通用的消息发送和接收平台,并且保证消息再传输过程中的安全。

环境准备

RabbitMQ服务端安装

  1. 获取镜像

    选择带有管理控制服务扩展的RabbitMQ镜像

    # 指定版本,选择包含带有web控制管理端的镜像
    docker pull rabbitmq:management
    
  2. 运行镜像

    采用默认用户运行,RabbitMQ 默认用户为guest 默认密码为 guest 默认服务端口5672 默认管理端口 15672

    docker run -d --hostname rabbitmq --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management
    
  3. 查看管理端

    容器启动成功后,通过浏览器访问 http://localhost:15672 打开管理端页面.

    image-20200426150046735

    输入用户名guest密码guest

    打开控制端页面,控制端的各功能使用不做过多描述.

    image-20200426150223744

到此表示rabbitmq服务端安装成功

RabbitMQ客户端PHP扩展安装

进行使用pecl安装扩展时,会存在对文件的操作权限问题,如果权限不足请使用 sudo 执行.

  1. 安装AMQP扩展

    rabbitmq支持amqp协议,本例使用amqp扩展进行讲述.

    通过pecl 进行安装,未安装pecl的请参考官网,自行安装即可.

    pecl install amqp
    

    我在安装时遇到输出警告信息

    phpseclib/phpseclib suggests installing ext-libsodium 
    

    提示缺少libsodlum扩展.

  2. 安装sodium扩展

    pecl install libsodium
    

    执行成功后控制台会输出执行结果

    Build process completed successfully
    Installing '/usr/local/Cellar/php@7.1/7.1.30_1/pecl/20160303/sodium.so'
    install ok: channel://pecl.php.net/libsodium-2.0.22
    Extension libsodium enabled in php.ini
    

    表示扩展已安装成功,默认会在php.ini文件自动添加扩展引入

    extension="sodium.so"
    

    默认引入时,扩展文件路径为默认路径,

    请检查php.ini文件扩展路径是否正确

    php -m
    

    检查扩展是否正确引入

    Warning: PHP Startup: Unable to load dynamic library '/usr/local/Cellar/php@7.1/7.1.30_1/lib/php/20160303/sodium.so' - dlopen(/usr/local/Cellar/php@7.1/7.1.30_1/lib/php/20160303/sodium.so, 9): image not found in Unknown on line 0
    

    表示扩展重复引入.检查各ini配置文件,删除重复即可.

    扩展文件正确路径应该为,pecl 执行结果中的提示路径 /usr/local/Cellar/php@7.1/7.1.30_1/pecl/20160303/sodium.so

    安装sodium扩展后,重复安装amqp扩展命令即可安装成功.

    扩展引入和检查,同sodium扩展.

  3. 安装php-amqplib组件

    通过composer进行安装php-amqplib组件

    composer.json中加入组件名称

    {
      "require": {
        "php": ">=7.1.0",
        "php-amqplib/php-amqplib": ">=2.9.0"
      }
    }
    

    执行composer install 进行安装.

到此PHP继承RabbitMQ开发的基础工作已经准备完毕.