mac-air上安装 rabbitmq 并简单使用
简介:
- brew 安装 rabbitmq,docker安装rabbitmq
- 安装官方php-amqp 扩展
- 简单使用样例(发送10次helloworld😄)
内容:
1
1.1 docker 安装 rabbitmq(前提是系统已安装docker)
编写docker-compose.yml文件内容
1 2 3 4 5 6 7 8 | version: '3' services: rabbitmq: # https://hub.docker.com/_/rabbitmq/ image: rabbitmq:3.7.7-management-alpine hostname : myrabbitmq ports: - "5672:5672" # mq port - "15672:15672" # admin port |
启动:
1 | docker-compose up -d rabbitmq |
显示如下安装成功:
1.2 也可通过 brew方式安装 rabbitmq
1 | brew install rabbitmq |
显示如下安装成功。
如访问 http://127.0.0.1:15672 未出现预期页面,可能未启动服务,执行如下命令启动。
1 | brew services start rabbitmq |
访问正常如下,默认账号密码为: guest guest。
登录后页面。
2安装官方php-amqp 扩展
未安装php-amqp扩展,或者扩展安装失败,执行php代码会出现如下提示。
安装rabbitmq-c。
1 | brew install rabbitmq-c |
下载官方php-amqp 扩展。rabbitmq 是amqp协议的开源实现。
1 | curl 'http://pecl.php.net/get/amqp-1.9.3.tgz' -o amqp-1.9.3.tgz |
解压下载包。进入源码根目录。执行如下命令。
1 | phpize |
1 | --with-librabbitmq- dir 这个需要修改为你环境rabbitmq-c的安装地址,brew 安装成功是最后会出现此安装目录信息。 --with-php-config这个配置为你环境的php-config地址 |
1 | . /configure --with-php-config= /usr/local/Cellar/php @5.6 /5 .6.39 /bin/php-config -with-amqp --with-librabbitmq- dir = /usr/local/Cellar/rabbitmq-c/0 .9.0 |
1 | make && make install |
make成功,会出现如下信息。
添加.so文件至php.ini文件。
重启php-fpm nginx。
打印phpinfo()。显示如下,则安装成功。
3 官方样例
https://www.rabbitmq.com/tutorials/tutorial-one-php.html
例子:发送10次hello world
composer.json
{ "require": { "php-amqplib/php-amqplib": ">=2.6.1" } }
引入包
1 | composer install |
编写消费者代码:
receive.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php /** * Created by Afei. * User: feiwang * Date: 2019-08-15 * Time: 21:00 */ require_once __DIR__ . '/vendor/autoload.php' ; use PhpAmqpLib\Connection\AMQPStreamConnection; $connection = new AMQPStreamConnection( 'localhost' , 5672, 'guest' , 'guest' ); $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 ( $channel ->is_consuming()) { $channel ->wait(); } $channel ->close(); $connection ->close(); |
消息生产者代码:
send.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php /** * Created by Afei. * User: feiwang * Date: 2019-08-15 * Time: 20:55 */ require_once __DIR__ . '/vendor/autoload.php' ; use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage; $connection = new AMQPStreamConnection( 'localhost' , 5672, 'guest' , 'guest' ); $channel = $connection ->channel(); $channel ->queue_declare( 'hello' , false, false, false, false); for ( $i =0; $i <10; $i ++){ $m = 'Hello World! time now:' . date ( "H:i:s" ,time()). " " . $i ; $msg = new AMQPMessage( $m ); $channel ->basic_publish( $msg , '' , 'hello' ); echo $m . "\n" ; } $channel ->close(); $connection ->close(); |
先执行 php receive.php
再执行 php send.php
效果:
文字均为博主原创,转载请联系博主,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器