zoukankan      html  css  js  c++  java
  • (转载)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

       


    作者:章为忠 
    出处:http://www.fpeach.com/ 
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以邮件:417114764@qq.com  微博:章为忠 QQ:417114764  联系我,非常感谢。

  • 相关阅读:
    跟面试官侃半小时MySQL事务,说完原子性、一致性、持久性的实现
    谈谈程序员的非技术思维
    跟面试官侃半小时MySQL事务隔离性,从基本概念深入到实现
    面试官问,你在开发中有用过什么设计模式吗?我懵了
    关于校招面试要怎么准备,这里有一些过来人的建议
    数据库中间件漫谈
    「从零单排HBase 06」你必须知道的HBase最佳实践
    「从零单排HBase 05」核心特性region split
    《Scalable IO in Java》译文
    Java多线程同步工具类之Semaphore
  • 原文地址:https://www.cnblogs.com/shw0099/p/7151038.html
Copyright © 2011-2022 走看看