RabbitMQ的PHP教程之入门 (一)
来源:互联网 发布:淘宝网厨房小东西 编辑:程序博客网 时间:2024/06/08 05:42
从网上也看了一些关于RabbitMQ的翻译版的教程,觉得有点啰嗦了。所以基于官方
http://www.rabbitmq.com/tutorials/tutorial-one-php.html做一个简单的备注说明,同时也是本人对学习RabbitMQ的一个总结。本人是从事PHP开发的,所以教程中的代码,都是使用PHP来实现,同时丢弃官网使用composer中的AMQPLIB,因为这个AMQPLIB对一些方法进行了封装,不只直观,所以本人使用原生的类、方法进行备注说明,这样更易于理解过程。
安装Rabbit参考:RabbitMQ的安装
安装Rabbit PHP扩展参考:PHP安装 AMQP扩展
PHP中的AMQP类的使用方法参考:PHP中的AMQP类
这6个教程的学习前提,你需要先了解
RabbitMQ AMQP 消息模型攻略
学习RabbitMQ必需要知道,以下几个知识点,也是RabbitMQ的灵魂:
- RabbitMQ是使用erlang开发,实现AMQP模型,使用mnesia数据库持久化数据。
- 理解Vhost、exchange、channel、queue、route key、producer、consumer,以及之间的相互关系。
- 理解exchange中的四种类型,direct、fanout、topic、headers。
如果能够充分理解3点,那么我觉得你已经学会RabbitMQ,接下来的6个教程,我更偏向把它理解成是RabbitMQ的应用场景,通过这六个场景的学习,能够深入我们的骨髓,在遇到技术问题的时候,我们能够恰当的选择RabbitMQ,那么我们就开始吧。
入门
本教程实现了从Producer发送消息,consumer接受消息的过程,也是RabbitMQ的基础的应用。
connect
下面的代码,将在每个.php文件,都应该有。为了简短篇幅,就在这入门篇,做统一的说明。在其他的章节中不再重复。
$config = [ 'host' => '192.168.80.122', 'vhost' => '/', 'port' => 5672, 'login' => 'wanda', 'password' => 'wanda'];$conn = new \AMQPConnection($config);$conn->connect();
send.php
$channel = new \AMQPChannel($conn);$queue = new \AMQPQueue($channel);$queue->setName('hello');$exchange = new \AMQPExchange($channel);$result = $exchange->publish('hello world!','hello');var_dump($result);
receive.php
$channel = new \AMQPChannel($conn);$channel->qos(0,0);$queue = new \AMQPQueue($channel);$queue->setName('hello');$queue->declareQueue();$result = $queue->get();if (!empty($result)) { echo $result->getBody();}
以上简单的实现了,从消息的发送到接受。但需要说明3个问题:
- 在send.php中,并未指定exchange的名称。实际上但未定义exchangeName时,会使用rabbitMQ中系统默认的exchange,默认的exchange是一个name为空的exchange。在使用publish时,会将消息发送到与rote key同名的queue中。
- 在receive.php中,如果未使用bind exchange,则默认绑定,RabbitMQ中默认的exchange,即为空名的exchange.
- 这个默认的exchange的Type是direct.
阅读全文
0 0
- RabbitMQ的PHP教程之入门 (一)
- RabbitMQ教程之php-amqplib(一)安装RabbitMQ
- RabbitMQ教程之php-amqplib(二)简介、入门
- RabbitMQ入门级教程
- RabbitMQ入门级教程
- RabbitMQ 教程一
- RabbitMQ 入门(一)
- RabbitMQ (一) 入门 Helloworld
- RabbitMQ 入门(一)
- RabbitMQ入门(一)
- RabbitMQ php 一 简介
- RabbitMQ教程之php-amqplib(三)工作队列
- RabbitMQ教程之php-amqplib(四)订阅、发布
- RabbitMQ教程之php-amqplib(五)路由
- RabbitMQ教程之php-amqplib(六)主题
- RabbitMQ教程之php-amqplib(七)远程调用
- maven教程一之入门
- RabbitMq入门以及使用教程
- 线程之间的通信(生产者和消费者问题)
- OPENGL学习笔记之glEnableVertexAttribArray函数
- 如何不适用任何额外空间,交换两个数的值
- 【JavaWeb】SpringMvc 事物自动提交和自动关闭连接
- linux 简单的cpu压力测试
- RabbitMQ的PHP教程之入门 (一)
- 进程线程笔记
- CGContextRef详解
- 欢迎使用CSDN-markdown编辑器
- H.264 编解码的过程是怎样的?H.264 码流的结构是怎样的?
- linux中cat、more、less、tail、head命令的区别
- uart通信判断数据接收完成方法——超时检测法
- unit9
- PCA(主成份分析),计算物体旋转角度