本篇并没有直接讲到技术,例如没有先写个Helloword。我想在选择了解或者学习一门技术之前先要明白为什么要现在这个技术而不是其他的,以免到最后发现自己学错了。同时如果已经确定就是他,最好先要了解下技术产生的背景等因素,以便对技术有更深刻全面的了解(那句话怎么讲的“你不了解过去的我,又怎么理解现在的我”)。

为什么使用RabbitMQ


为什么我开始选择学习RabbitMQ:

  1. 安装部署简单,上手门槛低,功能丰富,符合AMQP标准;
  2. 企业级消息队列,经过大量实践考验的高可靠;
  3. 集群易扩展,可以轻松的增减集群节点;
  4. 有强大的WEB管理页面。

企业为什么将RabbitMQ作为消息队列系统:

在我学习RabbitMQ的初期我在网上查到一些这方面的资料,我认为比较好的是下面这封http://www.doc88.com/p-5826232080382.html 一方面是他对于RabbitMQ的评价本身,更重要的是对于技术选型评价的两个维度:十万米高空看技术和显微镜看技术。

十万米高空看RabbitMQ:

  1. 有商业化的运营,不会轻易死掉;
  2. 遵循AMQP协议,不会被绑架;
  3. 强大的社区支持,为技术进步提供动力;
  4. 大量成功的应用案例,例如阿里、网易等互联网巨头都有使用。

显微镜看RabbitMQ:

  1. Erlang开发,AMQP的最佳搭档,在支持持久化的消息队列中性能算很优秀的;
  2. 支持消息持久化、支持消息确认机制、灵活的任务分发机制等,支持功能非常丰富;
  3. 可靠性高;
  4. 集群扩展很容易,并且可以通过增加节点实现成倍的性能提升;
  5. WEB管理和监控,有些技术癌更喜欢命令行界面,但WEB管理为后期运维提供很大的便利。
    RabbitMQ劣势:
    在kafka和zero面前性能被虐成渣,(持久化消息和ACK确认的情况下生产和消费消息单机大约在1-2万左右)

结论:如果你希望使用一个可靠性高、功能强大、易于管理的消息队列系统那么就选择RabbitMQ吧,如果你想用一个性能高,但偶尔丢点数据不是很在乎可以使用kafka或者zeroMQ。

RabbitMQ产生的背景


1、消息队列系统最在可以追溯到上个世纪(是不是感觉很久远,其实是1983年,那时候我还没用出生)。1983年最早的消息队列软件Teknekron诞生,当时紧用于一些金融交易等系统。

2、上世纪九十年代,诞生了多家消息队列系统,例如IBM MQ、微软的MSMQ、TIBCO MQ等消息队列在企业中的应用也愈加广泛。显然这些商用的消息队列系统如果企业要使用需要付出高昂的成本,并且各个消息队列之间使用不同的API不同的协议。

3、2004年,AMQP(Advanced Message Queuing Protocol,高级消息队列协议)开始开发。通过这一标准可以和任意AMQP供应商提供的MQ服务进行交互。

4、2006年,光阴荏苒时光如梭,一转眼就说到了重点。我们的主角使用Erlang语言实现的AMQP开源版本,RabbitMQ诞生了,同年AMQP协议首次发布。

为什么叫RabbitMQ?
很多人估计和我一样也有这个疑问,我在《RabbitMQ实战》这本书中找到了答案:兔子行动非常迅速而且繁殖起来也非常疯狂,所以就把Rabbit用作这个分布式软件的命名(就是真么简单)。

转自:https://blog.csdn.net/super_rd/article/details/70229714

RabbitMQ消息队列(一)-RabbitMQ的优劣势及产生背景的更多相关文章

  1. RabbitMQ消息队列之一:RabbitMQ的环境安装及配置

    RabbitMQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们 ...

  2. openresty 学习笔记五:访问RabbitMQ消息队列

    openresty 学习笔记五:访问RabbitMQ消息队列 之前通过比较选择,决定采用RabbitMQ这种消息队列来做中间件,目的舒缓是为了让整个架构的瓶颈环节.这里是做具体实施,用lua访问Rab ...

  3. (一)RabbitMQ消息队列-RabbitMQ的优劣势及产生背景

    原文:(一)RabbitMQ消息队列-RabbitMQ的优劣势及产生背景 本篇并没有直接讲到技术,例如没有先写个Helloword.我想在选择了解或者学习一门技术之前先要明白为什么要现在这个技术而不是 ...

  4. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

    消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...

  5. RabbitMQ消息队列(一): Detailed Introduction 详细介绍

     http://blog.csdn.net/anzhsoft/article/details/19563091 RabbitMQ消息队列(一): Detailed Introduction 详细介绍 ...

  6. RabbitMQ消息队列1: Detailed Introduction 详细介绍

    1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有 ...

  7. (转)RabbitMQ消息队列(九):Publisher的消息确认机制

    在前面的文章中提到了queue和consumer之间的消息确认机制:通过设置ack.那么Publisher能不到知道他post的Message有没有到达queue,甚至更近一步,是否被某个Consum ...

  8. (转)RabbitMQ消息队列(七):适用于云计算集群的远程调用(RPC)

    在云计算环境中,很多时候需要用它其他机器的计算资源,我们有可能会在接收到Message进行处理时,会把一部分计算任务分配到其他节点来完成.那么,RabbitMQ如何使用RPC呢?在本篇文章中,我们将会 ...

  9. (转)RabbitMQ消息队列(六):使用主题进行消息分发

    在上篇文章RabbitMQ消息队列(五):Routing 消息路由 中,我们实现了一个简单的日志系统.Consumer可以监听不同severity的log.但是,这也是它之所以叫做简单日志系统的原因, ...

  10. (转)RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)

    上篇文章中,我们把每个Message都是deliver到某个Consumer.在这篇文章中,我们将会将同一个Message deliver到多个Consumer中.这个模式也被成为 "pub ...

随机推荐

  1. bzoj 2428 均分数据 模拟退火

    模拟退火 按照自己的思路打了,结果WA,发现退火最关键的就是初温,降温,和修改次数, 这个题还在外层带了一个循环,骚气 #include<cstdio> #include<iostr ...

  2. Nginx隐藏index.php和配置vhost

    nginx启动命令 启动:nginx停止:nginx -s stop退出:nginx -s quit重启:nginx -s reopen重新加载:nginx -s reload平滑启动:kill -H ...

  3. 微信小程序中placeholder的样式

    通常,现代浏览器大多支持::placeholder选择器,用于设置placeholder的样式,但是在微信小程序中并不支持这种方式,而是提供了一个专门的属性(placeholder-class)来处理 ...

  4. Word页眉、页码的使用:利用分隔符设置指定页显示页眉,解决页码显示{PAGE \* MERGEFORMAT}问题

    不常编辑对文档有格式要求的朋友来说,偶尔需要编辑指定格式页眉页码的word文档时,会一时不记得如何使用,在网上搜索半天,异常烦躁. 特整理一下,记录下来,备不时只需. 以下操作环境为word2016. ...

  5. 《前端之路》之 JavaScript 进阶技巧之高阶函数(下)

    目录 第二章 - 03: 前端 进阶技巧之高阶函数 一.防篡改对象 1-1:Configurable 和 Writable 1-2:Enumerable 1-3:get .set 2-1:不可扩展对象 ...

  6. ES 10 - Elasticsearch的索引别名和索引模板

    目录 1 索引模板概述 1.1 什么是索引模板 1.2 索引模板中的内容 1.3 索引模板的用途 2 创建索引模板 3 查看索引模板 4 删除索引模板 5 模板的使用建议 5.1 一个index中不能 ...

  7. 为什么设置overflow为hidden可以清除浮动带来的影响

    1.问题起源 在平时的业务开发写CSS中,为了满足页面布局,元素的浮动特性我们用的不能再多了.使用浮动的确能够解决一些布局问题,但是也带了一些副作用影响,比如,父元素高度塌陷,我们有好几种可以清除浮动 ...

  8. itest 开源测试管理项目中封装的下拉列表小组件:实现下拉列表使用者前后端0行代码

    导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景       像easy ui 之类的纯前端组件,也有下拉列表组件,但是使用的时候,每个下拉列表,要配一个URL ...

  9. HTML 练习拖动面板

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 解决git Failed to connect to 127.0.0.1 port xxxx: Connection refused

    某天,用git拉取,提交代码的时候出现了git Failed to connect to 127.0.0.1 port xxxx: Connection refused的问题, 开始百度,看了一通.都 ...