`

PHP RabbitMQ 使用记录

 
阅读更多

中文介绍 :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封装以及使用

    本篇文章将深入探讨如何在Beego框架下封装并使用RabbitMQ,以实现高效、可靠的通信。 首先,我们要了解RabbitMQ。RabbitMQ是一款开源的消息代理和队列服务器,它基于AMQP(Advanced Message Queuing Protocol)协议...

    rabbitmq-server-windows-3.7.15.zip

    5. **多种客户端支持**:由于RabbitMQ是基于AMQP的,所以它支持多种编程语言的客户端库,如Java、Python、Ruby、.NET、PHP等,方便开发者在不同项目中使用。 6. **网络拓扑**:RabbitMQ允许创建复杂的网络拓扑结构...

    rabbitmq-logger:记录错误和异常int Rabbitmq交换

    Rabbitmq记录仪 将错误和异常记录为int Rabbitmq交换。 Rabbitmq Logger为提供了两个扩展。 RabbitMqLoggerExtension用于将错误/异常记录到rabbitmq范围中。 您应该在要将错误消息记录到rabbitmq的所有项目上使用...

    Python队列RabbitMQ 使用方法实例记录

    本文实例讲述了Python队列RabbitMQ 使用方法。分享给大家供大家参考,具体如下: 目前的exchange的路由策略是:每个需要队列的服务独享一个队列(queue),消费者(consumer)采用ACK自动应答模式处理队列消息。 ...

    rabbitmq-server-3.8.3_for_windows.rar

    2. **多语言客户端支持**:RabbitMQ支持多种编程语言,如Java、Python、Ruby、.NET、PHP等,使得跨平台集成变得简单。 3. **管理界面**:内建的Web管理界面允许用户监控和管理节点、队列、交换器和绑定,方便运维...

    beego - rabbitmq简单模式和工作模式

    在本文中,我们将深入探讨如何使用Go语言的Web框架beego与RabbitMQ集成,特别关注其简单的发布/订阅模式(Simple Mode)以及工作模式(Work Mode)。 首先,我们来看**简单模式**。在RabbitMQ的简单模式中,也被...

    Laravel开发-rabbitmq-management-api

    本文将详细介绍如何在 Laravel 开发中使用 RabbitMQ Management API,以及如何通过 `php-rabbitmq-management-api` 这个包来简化工作流程。 首先,安装 `php-rabbitmq-management-api` 包。在 Laravel 项目中,你...

    惠农电子超市(SpringCloud+Redis+Nginx+MySQL+Elasticsearch+RabbitMQ)

    在惠农电子超市项目中,用户信息、商品数据、订单记录等都需要持久化存储,MySQL提供了可靠的事务处理和复杂查询功能,满足了这些需求。 Elasticsearch作为全文搜索引擎,用于商品的搜索功能。它能快速地对海量数据...

    rabbitmq-pubsub-php:“RabbitMQ发布订阅实战-实现延时重试队列”一文的php代码示例

    在本文中,我们将深入探讨如何使用PHP与RabbitMQ实现发布订阅模式,并专注于构建一个延时重试队列。RabbitMQ是一个强大的开源消息代理,它允许不同应用程序之间通过消息进行异步通信。PHP作为流行的服务器端编程语言...

    RabbitMQ 50 道面试题及答案.docx

    1. 可靠性:RabbitMQ使用持久化、传输确认和确认等机制来保证消息的可靠传输。 2. 灵活的路由:RabbitMQ提供了多种路由机制,包括direct、fanout、topic和headers等,可以满足不同的业务需求。 3. 扩展性:RabbitMQ...

    esl-erlang_23.0_windows版本和rabbitmq3.8.4 wendows版本

    RabbitMQ可以在多种操作系统上运行,包括Windows,它支持多种编程语言的客户端库,如Java、Python、Ruby、PHP等,使得集成到各种软件栈变得容易。 **Erlang版本23.0** Erlang 23.0版本是Erlang/OTP平台的一个重要...

    PHP话费充值通道网站完整运营源码/全解密无授权源码

    这涉及到状态机的设计,以及异步任务的处理,可能使用到队列服务如RabbitMQ或Beanstalkd。 9. **性能优化**:为了处理高并发请求,源码可能包含了缓存策略(如Redis或Memcached)来减少数据库查询,以及使用CDN加速...

    PHP实例开发源码——php-vue单商户版客服聊天系统.zip

    5. **消息队列**:为了处理高并发情况下的消息发送,可能使用了消息队列(如RabbitMQ或Beanstalkd),以异步方式处理消息,提高系统的响应速度和稳定性。 6. **错误处理与日志记录**:PHP代码中通常会包含错误处理...

    IAPP源码聊天软件IAPP源码+php后端

    8. **消息队列**:大型聊天应用可能会使用消息队列(如RabbitMQ、Beanstalkd)来处理高并发情况下的消息发送,确保消息的可靠传递。 9. **负载均衡**:随着用户量增长,可能需要多台服务器部署应用。PHP源码应能...

    php飞蛾云打印,小票打印

    例如,可以使用异步处理或者队列系统(如RabbitMQ、Redis)来批量处理打印任务,保证服务的响应速度。 7. **测试与部署**:在实际应用前,应充分测试打印效果,包括不同打印机的兼容性、模板的适应性等。部署时,要...

    基于PHP的咖啡蜘蛛池php版源码.zip

    8. **任务调度**:对于大型项目,可能需要使用任务调度工具(如Gearman、RabbitMQ或Celery)来管理爬虫任务,控制爬取频率,避免对目标网站造成过大压力。 9. **错误处理与日志记录**:良好的错误处理和日志记录...

    基于PHP的喧喧(开源免费的企业即时通讯IM软件) 源码包.zip

    这需要理解PHP如何处理多线程、异步任务,以及可能使用的队列服务如RabbitMQ或Beanstalkd。 8. 聊天记录存储与检索:理解喧喧如何高效地存储和检索聊天记录,可能涉及到时间序列数据库、归档策略和索引优化等技术。...

    秒杀项目学习记录,基于 SpringBoot+Redis+RabbitMQ 秒杀系统seckill-study.zip

    包括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、...

    Laravel开发-correlate-php-guzzle

    在使用Guzzle发送请求时,这个关联ID会随请求一起传递,以便在接收端识别并记录。 例如,要在Laravel应用中使用Guzzle发送GET请求,你可以这样做: ```php use GuzzleHttp\Client; $client = new Client(); $...

Global site tag (gtag.js) - Google Analytics