zoukankan      html  css  js  c++  java
  • RabbitMQ的相关概念及五种队列模式

    一、RabbitMQ介绍

    消息队列产品有很多,比如说常见的有RocketMQ、RabbitMQ、ActiveMQ和Kafka。其中Kafka的性能是最好的,并发量比较大,而且消息收发的速度也非常快。但是消息收发的可靠性上,Kafka不如RabbitMQ,而且技术选型的时候执行速度并不是唯一标准。比速度的话,汇编语言碾压一切高级语言,但是现在我们写程序几乎不会选用汇编语言,而是要兼顾开发效率、易用性和生态圈。RabbitMQ还有另外一个杀手锏,那就是既支持消息异步收发,又支持同步收发,这个太牛了。虽然我们现在大部分的场景对应的是消息异步收发,但是有的场合要支持消息的同步收发,这时候RabbitMQ能适应各种业务场景的优点就显现出来了。所以在项目立项的时候,选择RabbitMQ是最稳妥的方案。

    二、RabbitMQ的五种队列模式

    (一)、简单模式

    一个生产者(发送方)对应一个消费者。(接收方)
    在这里插入图片描述

    (二)、Work模式

    一个生产者对应多个消费者,但是只能有一个消费者获得消息。(排他)

    在这里插入图片描述

    (三)、发布/订阅模式

    一个消费者将消息首先发送到fanout交换器,交换器绑定到多个队列,然后与之对应的所有消费者都能接收到消息。(不排他)
    在这里插入图片描述

    (四)、路由模式

    生产者将消息发送到direct交换器,交换器按照关键字(Key),把消息路由到某个队列。
    在这里插入图片描述

    (五)、主题模式

    生产者将消息发送到Topic交换器,交换器按照复杂的规则,把消息路由到某个队列
    在这里插入图片描述

    三、消息持久化

    消息的可靠性是RabbitMQ的一大特色,那么RabbitMQ是如何保证消息可靠性的呢?答案就是消息持久化。持久化可以防止在异常情况下丢失数据。除了消息持久化之外,甚至交换器和队列都能持久化。

    四、ACK应答

    默认情况下,消息是无限期存储在RabbitMQ上面的,但是我们可以设置消息过期时间,到期之后无论该消息是否已经被接收,都会被RabbitMQ删除。

  • 相关阅读:
    P1106 删数问题 / U83355 删数问题【升级版】
    P1955 [NOI2015] 程序自动分析
    P4447 [AHOI2018初中组]分组
    P1308 [NOIP2011 普及组] 统计单词数
    Django | 页面数据的缓存与使用
    Python 虚拟环境 | Mac/Linux下如何避坑安装配置Virtualenv
    python虚拟环境 | virtualenv 的简单使用 (图文)
    机器学习 | 浅谈K-近邻算法
    特征缩放 | 归一化和标准化 (下)
    简析方差、标准差与数值离散程度
  • 原文地址:https://www.cnblogs.com/geq2020/p/15027655.html
Copyright © 2011-2022 走看看