中文介绍 :http://baike.baidu.com/view/4095865.htm?fr=aladdin
官方地址:http://www.rabbitmq.com/
PHP扩展包:http://pecl.php.net/package/amqp
1. 安装RabbitMQ (unbuntu)
sudo apt-get install rabbitmq-server
sudo /etc/init.d/rabbitmq-server start
2. 安装librabbitmq (unbuntu)
sudo apt-get install mercurial
hg clone http://hg.rabbitmq.com/rabbitmq-c
cd rabbitmq-c
hg clone http://hg.rabbitmq.com/rabbitmq-codegen codegen
autoreconf -i && ./configure && make && sudo make install
3. 安装php-rabbit扩展 (unbuntu)
wget http://php-rabbit.googlecode.com/files/php-rabbit.r91.tar.gz
tar -zxvf php-rabbit.r91.tar.gz
cd php-rabbit.r91
/path/to/php/bin/phpize
./configure –with-amqp –with-php-config=/path/to/php/bin/php-config
make && sudo make install
编辑 php.ini 添加:
extension=rabbit.so
输出phpinfo看下是否扩展已经加载成功 (window apache下安装要注意同时在apache 配置文件中加载LoadFile "D:/xampp/php/rabbitmq.1.dll")
4. 代码实例
发送消息:
<?php error_reporting(E_ERROR); set_time_limit(0); $exchangeName = 'demo'; $queueName = 'hello'; $routeKey = 'hello'; $message = 'Hello World!'; $connection = new AMQPConnection(array('host' => '127.0.0.1', 'port' => '5672', 'vhost' => '/', 'login' => 'guest', 'password' => 'guest')); $connection->connect() or die("Cannot connect to the broker!\n"); try { $channel = new AMQPChannel($connection); $exchange = new AMQPExchange($channel); $exchange->setName($exchangeName); $queue = new AMQPQueue($channel); $queue->setName($queueName); $i = 0; while ($i < 100) { $message = $i .':'. date("Y-m-d H:i:s") ; $exchange->publish($message, $routeKey); $i +=1; } var_dump("[x] Sent 'Hello World!'"); } catch (AMQPConnectionException $e) { var_dump($e); exit(); } $connection->disconnect(); ?>
处理消息队列
<?php error_reporting(E_ERROR); set_time_limit(0); $exchangeName = 'demo'; $queueName = 'hello'; $routeKey = 'hello'; $connection = new AMQPConnection(array('host' => '127.0.0.1', 'port' => '5672', 'vhost' => '/', 'login' => 'guest', 'password' => 'guest')); $connection->connect() or die("Cannot connect to the broker!\n"); $channel = new AMQPChannel($connection); $exchange = new AMQPExchange($channel); $exchange->setName($exchangeName); $exchange->setType(AMQP_EX_TYPE_DIRECT); $exchange->declare(); $queue = new AMQPQueue($channel); $queue->setName($queueName); $queue->declare(); $queue->bind($exchangeName, $routeKey); var_dump('[*] Waiting for messages. To exit press CTRL+C'); while (TRUE) { $queue->consume('callback'); } $connection->disconnect(); function callback($envelope, $queue) { $msg = $envelope->getBody(); var_dump(" Received:" . $msg); $queue->nack($envelope->getDeliveryTag()); }
相关推荐
beego环境下 rabbitmq封装以及使用
Rabbitmq记录仪 将错误和异常记录为int Rabbitmq交换。 Rabbitmq Logger为提供了两个扩展。 RabbitMqLoggerExtension用于将错误/异常记录到rabbitmq范围中。 您应该在要将错误消息记录到rabbitmq的所有项目上使用...
本文实例讲述了Python队列RabbitMQ 使用方法。分享给大家供大家参考,具体如下: 目前的exchange的路由策略是:每个需要队列的服务独享一个队列(queue),消费者(consumer)采用ACK自动应答模式处理队列消息。 ...
beego - rabbitmq简单模式和工作模式 demo
Roger-Q Roger-Q是处理RabbitMQ队列的工具,它包括用于转储,重复数据删除和发布消息的命令。 安装运行此命令可从Github下载最新版本,将其移到bin文件夹中,Roger-Q Roger-Q是处理RabbitMQ队列的工具,它包括转储,...
NGINX,PHP-FPM 7.2,MySQL 5.7,phpMyAdmin,Redis,RabbitMQ 使用Graylog集中记录您本地环境上的自动HTTPS 强大的反向代理( ),可以在生产环境中处理自动HTTPS(通过 ) 使用或Docker for Mac的用户引导缓存在...
消费端进行消费的时候,如果由于业务异常我们可以进行日志的记录,然后进行补偿;如果由于服务器宕机等严重问题,那么我们就需要手工进行ACK,保障消费端消费成功,比如我们在消费端调用第三方接口,但这个第三方...
PHP-interview-myway记录PHP面试包括计算机网路,操作系统,PHP,redis,数据库MySQL(从2019年12月开始)面试了好未来,跟谁学,头条,极客保险,百度文库,百度知道等等公司。持续更新中微信号:86938904. 可以多...
记录一些docker-compose的使用方法 在写Dockerfile失败,最后遇到返回非零代码:100,报这个错误是因为在安装之前没有更新而遇到返回非零代码:1,这个报错情况多是docker-php-ext- install安装重复,小插曲经历:我...
spring-amqp-logback/log4jBest practice for logging with AMQP+LOGBACK/log4j (使用Rabbitmq+logback/log4j来中心化存储你的业务日志)包含 日志发布端(logback and log4j) 和 日志接收端 两个最佳实践例子。...
rabbitMQ 实例 , 只要是接收处理消息,并且添加了 记录执行状态的功能,redis queue 需要改动。 config 队列名称需要改动
使用消息队列(ActiveMQ和RabbitMQ)在不同的应用程序模块之间发送消息 安全层 授权,其中:命令,应用程序服务? 储存库 不可知的基本存储库(使用Doctrine,MongoDB等实现) 可以在注释中使用原则并保持域解耦...
表内存表记录出错次数与时间 无限扩展连结类型 无限扩展预设类型 双向支持 Rabbitmq MySQL的 Redis api开发 ...(待扩展) 初步支持 钉钉趾 邮件纠正 ...(待扩展) 架构图 初步示例图 安装要求 PHP> = 7.0 旋风> ...
细节 目标 该测试目标是显示同步交互和异步交互之间的区别。 例如,在较弱的硬件上,数据库... 我还没有找到如何在更改QoS设置的方法,因此在两个应用程序中都使用了默认设置。 PostgreSQL 11(500个连接限制); Rab
主要是用于记录一个phper的学习过程(技能树) Docker Framework CodeIgniter Swoft Git Golang Hexo HTTP Java Maven SpringBoot Linux MySQL Nginx PHP RabbitMq Redis Swoole Vagrant WebSocket 分布式 微服务 ...