前言
消息中间件是目前互联网项目应用特别广泛的一个中间件,主要用于处理异步操作,系统之间的应用解耦,以及并发下的流量削峰等等应用场景,今天开我们就进入消息中间件MQ的讲解,主流的MQ有很多,我们只需要掌握其中一到两种就可以了,基本都大同小异,OK,正式开始今天的MQ之旅。
NO.1 RocketMQ
RocketMQ前身叫做MetaQ, 在MeataQ发布3.0版本的时候改名为RocketMQ,其本质上的设计思路和Kafka类似,但是和Kafka不同的是其使用Java进行开发,由于在国内的Java受众群体远远多于Scala,所以RocketMQ是很多以Java语言为主的公司的首选。同样的RocketMQ和Kafka都是Apache基金会中的顶级项目,他们社区的活跃度都非常高,项目更新迭代也非常快。
先来看看这份RocketMQ学习思维导图(纯手打),学任何东西之前我都喜欢先梳理出一个大纲来,这样学习起来事半功倍
RocketMQ纯手打笔记(图文结合,易理解)
第一节: RocketMQ介绍
第二节: RocketMq中消息的发送
第三节: RocketMQ消息消费
第四节:深入消息发送
第五节:深入消息模式
第六节:顺序消息
第七节:延时消息
第八节:死 信队列
第九节:消费幕等
第十节:消息过滤
第十-节: RocketMQ存储概要设计
第十二节: RocketMQ中的事务消息
第十三节: RocketMQ主从同步(HA)机制
第十四节:限时订单实战
第十五节: RocketMQ源码分析
RocketMQ纯手打笔记共十五个小结,由浅入深将知识点一一剖析,由于内容实在太多了,篇幅有限无法在这里完全分享出来,需要这份笔记用以用以学习的朋友,点击学习
内容预览
image image imageNO.2 RabbitMQ
image消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、 安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。
RabbitMQ实战学习指南
RabbitMQ简介
image imageRabbitMQ入门
image image客户端开发向导
image imageRabbitMQ进阶
image imageRabbitMQ管理
image imageRabbitMQ配置
image imageRabbitMQ运维
image image跨越集群的界限
image imageRabbitMQ高阶
image image网络分区
image imageRabbitMQ扩展
image imageNO.3在面试大型互联网公司的时候,很可能会被问到消息队列的问题(附答案):
1.activemq 的几种通信方式
2.activemq 如果数据提交不成功怎么办(消息丢失)
3.如何解决消息重复问题
image4.大量的消息每页被消费,能否发生 oom 异常?
5.activeMQ 发送消息的方式有哪些?
6.activeMQ 如何调优
image7.什么是死信队列?
8.Basic.Reject 的用法是什么?
image9.为什么不应该对所有的 message 都使用持久化机制?
10.为什么 heavy RPC 的使用场景下不建议采用 disk node ?
11.向不存在的 exchange 发 publish 消息会发生什么?向不存在的queue 执行 consume 动作会发生什么?
12.什么情况下 producer 不主动创建 queue 是安全的?
image13. “dead letter”queue 的用途?
14.为什么说保证 message 被可靠持久化的条件是 queue 和 exchange具有 durable 属性,同时 message 具有 persistent 属性才行?
image最后
有些资料虽然在网上也能找到,但是花费的时间太多了,小编已将这些[RabbitMQ实战指南]、[思维脑图]、[手写RocketMQ笔记]、[消息中间件面试相关问题(附答案)]都整理成PDF文档了,需要用以用以学习,想要让自己得到进一步提升的程序员朋友,点击学习
image
网友评论