rabbitmq实战:一、天降奇兵
缘由,最近换了工作,而新的项目中使用了celery+rabbitmq来实现一个分布式任务队列系统,为了能够维护好这套系统,只能来学习一下这两个组件,顺便把学习笔记记录下来,留作以后回顾,当然如果碰巧能帮助到也在学习这两个组件的同学,那就更好了,关于celery的部分见这里。
这组笔记来源于《rabbitmq实战:高效部署分布式消息队列》
该章开篇首先介绍了为什么需要引入消息队列,通过一个简单的认证模块的例子来展示了引入消息队列之后实现了模块之间的解耦,方便扩展。
补充一下自己的想法:我认为这里举的这个认证模块的例子不太合适,因为认证模块是一个同步的模块,等待认证结果返回才能继续下来,但是引入消息队列之后会增加处理时间,还会出现消费者如果出了问题,就会导致消息阻塞,所以不如不用消息队列,个人想法,如果不对,还请指正。
1.1、消息队列的发展史
其实消息队列在1983年就已经有人提出了这种“信息总线”的思想,并付诸了实施,开发除了Teknekron,它刚开始后的客户都是金融行业,后来新闻行业也成了它的客户,因为新闻是典型的需要把消息分发给不同的客户的应用场景,然后IBM也开始研发自己的商业消息队列软件IBM MQ,但是这些都是商业软件,并非开源的,它们之间都是没有一个统一的标准的,这给用户带来了复杂性,于是后来就有许多企业连接制定了统一、开放的消息通信队列协议:AMQP,这也是这本书的主角rabbitmq的协议标准。
1.2、rabbitmq的发展史
这里介绍了rabbitmq创始人的经历,令我感到的奇怪的是,他们居然会上来就选择一个工具型的应用来进行创业,并且还成功了,这在中国是很少见的,至少现在还是很少的,更多的是应用层的创业的,其实这也是中国和国外IT的差距吧,看似繁荣的表面,其实基础软件依旧还是属于学习者。
2006年的时候rabbit technologies公司成立,这个家公司就是专门开发rabbitmq的。
其中介绍了对于开发语言的选型,为什么选择erlang,因为erlang本身是为了开发交换机而开发的语言,所以很适合rabbit,另外erlang实现分布式很方便(这个我还不太理解,没有使用过erlang)。
1.3、rabbitmq的优势
世面上这么多的消息队列软件:ActiveMQ、ZeroMQ、Kafka,那么rabbitmq和这些相比有什么优势呢?
rabbitmq是完全实现了qmap协议的、由于erlang,rabbitmq集群很方便实现、rabbitmq更稳定
1.4、安装rabbitmq
这个我建议直接查看rabbitmq的官网,介绍的很详细
第一章介绍学习完了,之前学习一个新的技术总是觉得看完了就ok了,即使写笔记也更像是“抄书”,觉得没有什么意思,但是现在想想总觉得还是希望能留下点什么,所以尽量坚持写写学习笔记,尽量把学会的东西转换为自己的语言,避免“抄书”。
rabbitmq实战:一、天降奇兵的更多相关文章
- rabbitMQ实战(一)---------使用pika库实现hello world
rabbitMQ实战(一)---------使用pika库实现hello world 2016-05-18 23:29 本站整理 浏览(267) pika是RabbitMQ团队编写的官方Pyt ...
- Java SpringBoot集成RabbitMq实战和总结
目录 交换器.队列.绑定的声明 关于消息序列化 同一个队列多消费类型 注解将消息和消息头注入消费者方法 关于消费者确认 关于发送者确认模式 消费消息.死信队列和RetryTemplate RPC模式的 ...
- websocket+rabbitmq实战
1. websocket+rabbitmq实战 1.1. 前言 接到的需求是后台定向给指定web登录用户推送消息,且可能同一账号会登录多个客户端都要接收到消息 1.2. 遇坑 基于springbo ...
- celery+RabbitMQ 实战记录2—工程化使用
上篇文章中,已经介绍了celery和RabbitMQ的安装以及基本用法. 本文将从工程的角度介绍如何使用celery. 1.配置和启动RabbitMQ 请参考celery+RabbitMQ实战记录. ...
- RabbitMQ实战经验分享
前言 最近在忙一个高考项目,看着系统顺利完成了这次高考,终于可以松口气了.看到那些即将参加高考的学生,也想起当年高三的自己. 下面分享下RabbitMQ实战经验,希望对大家有所帮助: 一.生产消息 关 ...
- 【RabbitMQ 实战指南】一 RabbitMQ 开发
1.RabbitMQ 安装 RabbitMQ 的安装可以参考官方文档:https://www.rabbitmq.com/download.html 2.管理页面 rabbitmq-management ...
- 【RabbitMQ 实战指南】一 延迟队列
1.什么是延迟队列 延迟队列中存储延迟消息,延迟消息是指当消息被发送到队列中不会立即消费,而是等待一段时间后再消费该消息. 延迟队列很多应用场景,一个典型的应用场景是订单未支付超时取消,用户下单之后3 ...
- RabbitMQ实战应用技巧
1. RabbitMQ实战应用技巧 1.1. 前言 由于项目原因,之后会和RabbitMQ比较多的打交道,所以让我们来好好整理下RabbitMQ的应用实战技巧,尽量避免日后的采坑 1.2. 概述 Ra ...
- Spring Boot 集成 RabbitMQ 实战
Spring Boot 集成 RabbitMQ 实战 特别说明: 本文主要参考了程序员 DD 的博客文章<Spring Boot中使用RabbitMQ>,在此向原作者表示感谢. Mac 上 ...
随机推荐
- uniapp - 阿里图库字体图标使用
[iconfont下载] https://www.iconfont.cn/search/index?searchType=icon&q=%E4%B8%8A%E4%BC%A0 可能报错,找不到线 ...
- jmeter cookie管理器
jmeter cookie管理器 不能用正则表达式获取登录接口生成的cookie 因为cookies并不是在登录的响应结果中生成的,而是在response header中携带的,所以不能用正则表达式提 ...
- Python执行时间的计算方法
# CPU的执行时间start = time.clock()#end = time.clock()print(end-start) # 程序执行时间:start = datetime.datetime ...
- Java算法 -- 桶排序
桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里.每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序).桶排序是鸽巢排序 ...
- linux修改系统时间和时区
1.修改系统时间linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时钟,是linux系统Kernel时间.当Linux启动时,系统Kernel ...
- php实用功能小记
1.任意数目的参数 function fun(){ $args = func_get_args(); foreach ($args as $k => $v) { echo "arg&q ...
- consul集群搭建以及ACL配置
由于时间匆忙,要是有什么地方没有写对的,请大佬指正,谢谢.文章有点水,大佬勿喷这篇博客不回去深度的讲解consul中的一些知识,主要分享的我在使用的时候的一些操作和遇见的问题以及解决办法.当然有些东西 ...
- Laravel 数据库实例教程 —— 使用查询构建器对数据库进行增删改查
原文地址:https://blog.csdn.net/lmy_love_/article/details/72832259 获取查询构建器很简单,还是要依赖DB门面,我们使用DB门面的table方法, ...
- 最新 奥买家java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.奥买家等10家互联网公司的校招Offer,因为某些自身原因最终选择了奥买家.6.7月主要是做系统复习.项目复盘.LeetCo ...
- Nginx是什么及作用?代理和反向代理解析
一:介绍 nginx是一个高性能的HTTP和反向代理服务器,其特点是占用内存少,并发能力强. 二:名词介绍 代理服务器: 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络 ...