中文介绍 :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。RabbitMQ是一款开源的消息代理和队列服务器,它基于AMQP(Advanced Message Queuing Protocol)协议...
5. **多种客户端支持**:由于RabbitMQ是基于AMQP的,所以它支持多种编程语言的客户端库,如Java、Python、Ruby、.NET、PHP等,方便开发者在不同项目中使用。 6. **网络拓扑**:RabbitMQ允许创建复杂的网络拓扑结构...
Rabbitmq记录仪 将错误和异常记录为int Rabbitmq交换。 Rabbitmq Logger为提供了两个扩展。 RabbitMqLoggerExtension用于将错误/异常记录到rabbitmq范围中。 您应该在要将错误消息记录到rabbitmq的所有项目上使用...
本文实例讲述了Python队列RabbitMQ 使用方法。分享给大家供大家参考,具体如下: 目前的exchange的路由策略是:每个需要队列的服务独享一个队列(queue),消费者(consumer)采用ACK自动应答模式处理队列消息。 ...
2. **多语言客户端支持**:RabbitMQ支持多种编程语言,如Java、Python、Ruby、.NET、PHP等,使得跨平台集成变得简单。 3. **管理界面**:内建的Web管理界面允许用户监控和管理节点、队列、交换器和绑定,方便运维...
在本文中,我们将深入探讨如何使用Go语言的Web框架beego与RabbitMQ集成,特别关注其简单的发布/订阅模式(Simple Mode)以及工作模式(Work Mode)。 首先,我们来看**简单模式**。在RabbitMQ的简单模式中,也被...
本文将详细介绍如何在 Laravel 开发中使用 RabbitMQ Management API,以及如何通过 `php-rabbitmq-management-api` 这个包来简化工作流程。 首先,安装 `php-rabbitmq-management-api` 包。在 Laravel 项目中,你...
在惠农电子超市项目中,用户信息、商品数据、订单记录等都需要持久化存储,MySQL提供了可靠的事务处理和复杂查询功能,满足了这些需求。 Elasticsearch作为全文搜索引擎,用于商品的搜索功能。它能快速地对海量数据...
在本文中,我们将深入探讨如何使用PHP与RabbitMQ实现发布订阅模式,并专注于构建一个延时重试队列。RabbitMQ是一个强大的开源消息代理,它允许不同应用程序之间通过消息进行异步通信。PHP作为流行的服务器端编程语言...
1. 可靠性:RabbitMQ使用持久化、传输确认和确认等机制来保证消息的可靠传输。 2. 灵活的路由:RabbitMQ提供了多种路由机制,包括direct、fanout、topic和headers等,可以满足不同的业务需求。 3. 扩展性:RabbitMQ...
RabbitMQ可以在多种操作系统上运行,包括Windows,它支持多种编程语言的客户端库,如Java、Python、Ruby、PHP等,使得集成到各种软件栈变得容易。 **Erlang版本23.0** Erlang 23.0版本是Erlang/OTP平台的一个重要...
这涉及到状态机的设计,以及异步任务的处理,可能使用到队列服务如RabbitMQ或Beanstalkd。 9. **性能优化**:为了处理高并发请求,源码可能包含了缓存策略(如Redis或Memcached)来减少数据库查询,以及使用CDN加速...
5. **消息队列**:为了处理高并发情况下的消息发送,可能使用了消息队列(如RabbitMQ或Beanstalkd),以异步方式处理消息,提高系统的响应速度和稳定性。 6. **错误处理与日志记录**:PHP代码中通常会包含错误处理...
8. **消息队列**:大型聊天应用可能会使用消息队列(如RabbitMQ、Beanstalkd)来处理高并发情况下的消息发送,确保消息的可靠传递。 9. **负载均衡**:随着用户量增长,可能需要多台服务器部署应用。PHP源码应能...
例如,可以使用异步处理或者队列系统(如RabbitMQ、Redis)来批量处理打印任务,保证服务的响应速度。 7. **测试与部署**:在实际应用前,应充分测试打印效果,包括不同打印机的兼容性、模板的适应性等。部署时,要...
8. **任务调度**:对于大型项目,可能需要使用任务调度工具(如Gearman、RabbitMQ或Celery)来管理爬虫任务,控制爬取频率,避免对目标网站造成过大压力。 9. **错误处理与日志记录**:良好的错误处理和日志记录...
这需要理解PHP如何处理多线程、异步任务,以及可能使用的队列服务如RabbitMQ或Beanstalkd。 8. 聊天记录存储与检索:理解喧喧如何高效地存储和检索聊天记录,可能涉及到时间序列数据库、归档策略和索引优化等技术。...
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、...
在使用Guzzle发送请求时,这个关联ID会随请求一起传递,以便在接收端识别并记录。 例如,要在Laravel应用中使用Guzzle发送GET请求,你可以这样做: ```php use GuzzleHttp\Client; $client = new Client(); $...