mac-air上安装 rabbitmq 并简单使用
简介:
- brew 安装 rabbitmq,docker安装rabbitmq
- 安装官方php-amqp 扩展
- 简单使用样例(发送10次helloworld😄)
内容:
1
1.1 docker 安装 rabbitmq(前提是系统已安装docker)
编写docker-compose.yml文件内容
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
启动:
docker-compose up -d rabbitmq
显示如下安装成功:
1.2 也可通过 brew方式安装 rabbitmq
brew install rabbitmq
显示如下安装成功。
如访问 http://127.0.0.1:15672 未出现预期页面,可能未启动服务,执行如下命令启动。
brew services start rabbitmq
访问正常如下,默认账号密码为: guest guest。
登录后页面。
2安装官方php-amqp 扩展
未安装php-amqp扩展,或者扩展安装失败,执行php代码会出现如下提示。
安装rabbitmq-c。
brew install rabbitmq-c
下载官方php-amqp 扩展。rabbitmq 是amqp协议的开源实现。
curl 'http://pecl.php.net/get/amqp-1.9.3.tgz' -o amqp-1.9.3.tgz
解压下载包。进入源码根目录。执行如下命令。
phpize
--with-librabbitmq-dir这个需要修改为你环境rabbitmq-c的安装地址,brew 安装成功是最后会出现此安装目录信息。
--with-php-config这个配置为你环境的php-config地址
./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
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" } }
引入包
composer install
编写消费者代码:
receive.php
<?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
<?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
效果:
文字均为博主原创,转载请联系博主,谢谢!