RabbitMQ学习系列(一): 介绍
1. 介绍
RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue )协议的开源实现。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面都非常的优秀。是当前最主流的消息中间件之一。
RabbitMQ的官网:http://www.rabbitmq.com
2. AMQP
AMQP,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,同样,消息使用者也不用知道发送者的存在。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
3. 系统架构
消息队列的使用过程大概如下:
(1)客户端连接到消息队列服务器,打开一个channel。
(2)客户端声明一个exchange,并设置相关属性。
(3)客户端声明一个queue,并设置相关属性。
(4)客户端使用routing key,在exchange和queue之间建立好绑定关系。
(5) 客户端投递消息到exchange。exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。
如下图所示:AMQP 里主要要说两个组件:Exchange 和 Queue
绿色的 X 就是 Exchange ,红色的是 Queue ,这两者都在 Server 端,又称作 Broker ,
这部分是 RabbitMQ 实现的,而蓝色的则是客户端,通常有 Producer 和 Consumer 两种类型。
4. 几个概念
P: 为Producer,数据的发送方。
C:为Consumer,数据的接收方。
Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
Queue:消息队列载体,每个消息都会被投入到一个或多个队列。
Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。
channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。
PS: RabbitMQ 的一些基本的概念,就介绍完了,虽然都是些概念,但是了解他的一些原理,还是很重要的,特别是exchange 和 路由的概念和作用。接下来会具体介绍他的安装和使用。
查看RabbitMQ 系列其他文章,http://www.cnblogs.com/zhangweizhong/category/855479.html
最新文章
- ttf,eot,woff,svg,字体格式介绍及使用方法
- NPOI操作Excel时使用列头来读取数据的方法
- Linux C 字符串函数 sprintf()、snprintf() 详解
- the fifth class
- Spring-JDBC实现Contact的CRUD
- vijos-1003等价表达式
- MVC 路由模块内核原理
- Inside TSQL Querying - Chapter 2. Physical Query Processing
- (转)word2vec前世今生
- 读书笔记_Effective_C++_条款二十四: 若所有参数皆需类型转换,请为此采用non-member函数
- 团队作业4——第一次项目冲刺(Alpha版本)4.24
- lintcode 链表求和
- 关于用户与服务端密码的校验问题 !mysql php
- LeetCode算法题-Island Perimeter(Java实现)
- 在Python中使用SMTP发送电子邮件
- SpringBoot笔记十五:任务
- BIM轻量化助力建筑业迈向BIM+时代
- 恶意代码分析实战-启动一个恶意的DLL
- elasticSearch6源码分析(6)http和transport模块
- 模拟app端上传图片
热门文章
- knockoutjs如何动态加载外部的file作为component中的template数据源
- Java 相关书籍
- Java中serialVersionUID的解释及两种生成方式的区别(转载)
- ambari2.4.2_centos7 学习全纪录
- [Hadoop]-从数据去重认识MapReduce
- VS2015 出现 .NETSystem.Runtime.Remoting.RemotingException: TCP 错误
- codevs 1228 苹果树 树链剖分讲解
- ngx_http_fastcgi_module模块.md
- 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->;312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串
- nginx 虚拟主机配置