• RabbitMQ的基本概念与原理(一)


    1、什么是MQ?

    MQ全称为Message Queue, 顾名思义,即消息队列,它是一种应用程序对应用程序的通信方法。MQ是消费-生产者模型的一个典型的代表,生产者不断的往消息队列中不断写入消息,消费者则可以读取或者订阅队列中的消息,生产者和消费者不需要知道对方是谁,一个负责发消息,一个负责收消息,MQ是遵循了AMQP(高级消息队列协议)的具体实现和产品。

    AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。

    2、RabbitMQ是什么?

    RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP的标准实现,支持Windows,linux等多种操作系统和Java,PHP等多种编程语言。

    3、RabbitMQ的一些基本概念

     

     这是一个在网上流传甚广的RabbitMQ的图,我从百度百科偷来的(好吧,我这个渣渣承认我画不出来这么好看的图,给当初的作图者赞一个)

    (1)Producer:生产者,负责生产消息以及投递消息到Exchange(交换机)

    (2)Exchange:交换机,根据交换机类型的不同,按照不同的规则,通过RoutingKey(路由键)投递到某个Queue(队列)里

    (3)RoutingKey:路由键,通过RoutingKey(路由键)将Queue(队列)与Exchange(交换机)Binding(绑定)在一起,      Exchange(交换机)通过RoutingKey(路由键)将消息投递到某个Queue(队列)

    (4)Queue:队列,消息都存放在Queue(队列)里,Exchange(交换机)通过RoutingKey(路由键)将消息投递到某个Queue(队列)

    (5)Binding:绑定,通过RoutingKey(路由键)将Queue(队列)与Exchange(交换机)Binding(绑定)在一起

    (6)Consumer:消费者,负责从Queue(队列)里取消息及消费消息

    (7)Channel:信道。信道(Channel)是多路复用连接中的一条独立的双向数据流通道,消息发布接受订阅都依靠信道完成。

    (8)Vhost:虚拟主机,即消息队列服务器实体

    4、RabbitMQ的工作流程

    (一)发送流程

    (1)Producer(生产者)连接到Vhost(消息队列服务器)

    (2)Producer(生产者)创建声明一个Exchange(交换机),设置其属性

    (3)Producer(生产者)投递Msg(消息)和RoutingKey(路由键)到Exchange(交换机)

    (二)消费过程

    (1)Consumer(消费者)连接到Vhost(消息队列服务器)

    (2)Consumer(消费者)连接到Exchange(交换机),设置其属性

    (3)Consumer(消费者)创建声明一个Queue(队列),设置其属性

    (4)Consumer(消费者)通过RoutingKey(路由键),将Exchange(交换机)和Queue(队列)Binding(绑定)

    (5)Exchange(交换机)接收到Msg(消息)后,根据RoutingKey(路由键)和Binding(绑定),将Msg(消息)进行路由

    ,将Msg(消息)投递到Queue(队列)里

    (6)Consumer(消费者)取出Queue(队列)里的Msg(消息)进行消费

    整个过程类似网络层路由器对数据包的路由的过程

    即主机A(生产者)发送了一个数据包(消息)到了路由器(交换机),然后路由器(交换机)根据其协议地址(路由键)将数据包(消息)发送到主机B(消费者)

    【转】:https://blog.csdn.net/yeyun666/article/details/84953034

  • 相关阅读:
    union 和 union all的区别
    JDBC中PreparedStatement相比Statement的好处
    25个经典的Spring面试问答
    MySQL 事务
    漫谈Linux下的音频问题(转)
    监控 Linux 性能的 18 个命令行工具(转)
    在终端中用默认程序打开文件(转)
    【转】使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
    Getting Started with Amazon EC2 (1 year free AWS VPS web hosting)
    压缩解压命令小结
  • 原文地址:https://www.cnblogs.com/mjhblog/p/12201370.html
Copyright © 2020-2023  润新知