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 上 ...
随机推荐
- java8新特性一图整理
可以右键在新选项卡打开查看大图 原图地址:https://www.processon.com/view/5abb31abe4b027675e42cebc#map
- Python3.7安装(解决ssl问题)
摘自:https://blog.csdn.net/love_cjiajia/article/details/82254371 python3.7安装(解决ssl的问题) 1) 安装准备 yum -y ...
- Qt编写图片及视频TCP/UDP网络传输
一.前言 很多年前就做过类似的项目,无非就是将本地的图片上传到服务器,就这么简单,其实用http的post上传比较简单容易,无需自定义协议,直接设置好二进制数据即可,而采用TCP或者UDP通信的话,必 ...
- 人工智能新编程语言-Gen
MIT 的一个研究小组正努力让初学者更容易入门人工智能,同时也帮助专家进一步推进这个领域的发展. 在 PLDI 大会(Programming Language Design and Implement ...
- [LeetCode] 295. Find Median from Data Stream 找出数据流的中位数
Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...
- [LeetCode] 741. Cherry Pickup 捡樱桃
In a N x N grid representing a field of cherries, each cell is one of three possible integers. 0 mea ...
- vscode插件Power Mode
Power Mode官网 设置里添加 "powermode.enabled": true, "powermode.presets": "flames& ...
- 【剑指offer】面试题 19. 正则表达式匹配
面试题 19. 正则表达式匹配
- 使用TCP的协议有哪些?使用UDP的协议有哪些?
运行于TCP协议之上的协议: HTTP协议:超文本传输协议,用于普通浏览 HTTPS协议:安全超文本传输协议,身披SSL外衣的HTTP协议 FTP协议:文件传输协议,用于文件传输 POP3协议:邮局协 ...
- c++基础(七)——面向对象程序设计
面向对象程序设计(Object-oriented programming)的核心思想是数据抽象,继承,和动态绑定. 1. 继承 在C++语言中,基类将类型相关的函数与派生类不做改变直接继承的函数区分对 ...