月度归档:2017年01月

RabbitMQ中的运维命令

之前在学习RabbitMQ原理的时候,觉得RabbitMQ的启动、停止命令好坑,还有app_start、app_stop,到底用哪个启动呀?有什么区别和联系吗?本人在学习官方教程的过程中,做了这篇笔记。

继续阅读

RabbitMQ的PHP教程之RPC (六)

RPC(Remote Procedure Call Protocol)远程过程调用协议,简称远程调用。但如果仅仅从这一层意义上来说,RabbitMQ的PRC没有实际的意义,因为远程调用接口服务,我们通过curl会更简单易用一些,而且PHP本身也有RPC调用的相关方法。但我要说的是,RabbitMQ的RPC主要用于消息消费后的回复。在这一点RabbitMQ就显得有意义了。因为我们有的时候,发送消息后,需要知道消费的情况,根据消费的情况做后续的逻辑。

继续阅读

RabbitMQ的PHP教程之Routing (四)

关于这一篇的教程,主要是针对Route Key的使用。在第二篇的文章中,我们使用direct类型的exchange实现工作队列。在这个基础之上,我们再进行一个扩展:即一个队列绑定多个route key,这样绑定多个route key的队列就能接收到不同route key的消息。但有一点是固定不变的,就是一个message只能有一个route key.

继续阅读

RabbitMQ的PHP教程之发布/订阅 (三)

发布 / 订阅模式可以理解为广播模式:即exchange会将消息转发到所有绑定到这个exchange的队列上。针对这种广播模式,RabbitMQ增加了exchange Type的选项 AMQP_EX_TYPE_FANOUT,这种类型在发送消息,queue bind时,都将忽略route key,也就是说不需要设置 route key。

继续阅读

RabbitMQ的PHP教程之入门 (一)

从网上也看了一些关于RabbitMQ的翻译版的教程,觉得有点啰嗦了。所以基于官方
http://www.rabbitmq.com/tutorials/tutorial-one-php.html做一个简单的备注说明,同时也是本人对学习RabbitMQ的一个总结。本人是从事PHP开发的,所以教程中的代码,都是使用PHP来实现,同时丢弃官网使用composer中的AMQPLIB,因为这个AMQPLIB对一些方法进行了封装,不只直观,所以本人使用原生的类、方法进行备注说明,这样更易于理解过程。

继续阅读

RabbitMQ AMQP 消息模型攻略

AMQP 的消息模型如下图所示:

通过此图我们可以知道, 一个消息的发送流程有如下几个步骤:

  1. 消息生产者将消息发布(Publish)到 Exchange 中.
  2. Exchange 根据队列的绑定关系将消息分发到不同的 Queue 中.
  3. AMQP broker 根据订阅规则将消息发送给消费者消费者自行根据需要从消息队列中获取消息.

继续阅读

AMQP文件中的常量

/**
* Passing in this constant as a flag will forcefully disable all other flags.
* Use this if you want to temporarily disable the amqp.auto_ack ini setting.
* 传递这个参数作为标志将完全禁用其他标志,如果你想临时禁用amqp.auto_ack设置起效
*/

继续阅读

RabbitMQ的原理与操作示例

AMPQ协议为了能够满足各种消息队列需求,在概念上比较复杂。首先,rabbitMQ启动默认是没有任何配置的,需要客户端连接上去,设置交换机等才能工作。不把这些基础概念弄清楚,后面程序设计就容易产生问题。

继续阅读

PHP中的AMQP类

一定要注意php安装AMQP的版本,版本不同使用的方法不一样。在官方网站就有2个版本的AMQP
第一版本:xxx,详细的url找不到了
第二版本:http://docs.php.net/manual/da/book.amqp.php
千万不要出现这种情况,找到一个官方的版本,然后按照example,怎么调试都不通….按照PHP安装 AMQP扩展 安装的AMQP扩展是最新的,现在和PHP官方给出的第二版本,也有一些区别。主要体现在exchange和queue中有个declare的方法,分别更改成declarExchange()和declarQueue().

继续阅读

RabbitMQ中的AMQP协议规范

一、概述

1.1 本文档的目标

此文档定义了一个网络协议-高级消息队列协议(AMQP), 它使一致的客户端程序可以与一致的消息中间件服务器进行通信.
我们面对的是这个领域有经验的技术读者,同时还提供了足够的规范和指南.技术工程师可以根据这些文档,在任何硬件平台上使用各种编程语言来构建遵从该协议的解决方案。

继续阅读

PHP安装 AMQP扩展

AMQP扩展能够支持rabbitMQ,AMQP是rabbitMQ的协议(Advanced Message Queue Protocol 高级消息队列协议)这个可自行百度。

继续阅读