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

  

最新文章

  1. ttf,eot,woff,svg,字体格式介绍及使用方法
  2. NPOI操作Excel时使用列头来读取数据的方法
  3. Linux C 字符串函数 sprintf()、snprintf() 详解
  4. the fifth class
  5. Spring-JDBC实现Contact的CRUD
  6. vijos-1003等价表达式
  7. MVC 路由模块内核原理
  8. Inside TSQL Querying - Chapter 2. Physical Query Processing
  9. (转)word2vec前世今生
  10. 读书笔记_Effective_C++_条款二十四: 若所有参数皆需类型转换,请为此采用non-member函数
  11. 团队作业4——第一次项目冲刺(Alpha版本)4.24
  12. lintcode 链表求和
  13. 关于用户与服务端密码的校验问题 !mysql php
  14. LeetCode算法题-Island Perimeter(Java实现)
  15. 在Python中使用SMTP发送电子邮件
  16. SpringBoot笔记十五:任务
  17. BIM轻量化助力建筑业迈向BIM+时代
  18. 恶意代码分析实战-启动一个恶意的DLL
  19. elasticSearch6源码分析(6)http和transport模块
  20. 模拟app端上传图片

热门文章

  1. knockoutjs如何动态加载外部的file作为component中的template数据源
  2. Java 相关书籍
  3. Java中serialVersionUID的解释及两种生成方式的区别(转载)
  4. ambari2.4.2_centos7 学习全纪录
  5. [Hadoop]-从数据去重认识MapReduce
  6. VS2015 出现 .NETSystem.Runtime.Remoting.RemotingException: TCP 错误
  7. codevs 1228 苹果树 树链剖分讲解
  8. ngx_http_fastcgi_module模块.md
  9. 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串
  10. nginx 虚拟主机配置