mac-air上安装 rabbitmq 并简单使用
2024-09-06 16:02:03
简介:
- 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
效果:
最新文章
- CSharpGL(31)[译]OpenGL渲染管道那些事
- [LeetCode] Remove Linked List Elements
- xml配置文件的读写
- PetaPoco 使用总结(一)
- SevenZip.pas BUG修改版 - 20160613
- Greedy:Radar Installation(POJ 1328)
- hdu 4240 Route Redundancy 最大流
- 252.	Meeting Rooms
- VS2013 :IntelliSense: 不允许使用不完整的类型
- 用于显示上个月和下个月_PHP
- 解决nginx上传模块nginx_upload_module传递GET参数
- 由一个LED闪烁问题发现的MTK的LED driver中存在的问题
- 推荐一篇很好的介绍wpf dependency property的文章
- TestNG操作详解
- 轻松几句搞定【Javascript中的this指向】问题
- JavaScript中的typeof
- Mac 系统下创建可双击执行文件,cd到执行文件当前目录
- halcon形态学运算
- [算法专题] Binary Tree
- Html5 标签一(文本)