目前市面上主流的消息中间件产品有四种:
1.ActiveMQ:一款比较早的Apache产品,完全支持JMS规范,API丰富,但是性能太低,适用于中小企业,对并发性能没有过多要求。
2.Kafka:一款分布式发布-订阅消息中间件,追求高吞吐量,性能很高,最初用于做日志收集,但是对于数据准确性做得不好,对事物支持不好,不适用于金融等行业。
3.RocketMQ:一款阿里的开源消息中间件,对于高并发、高可用、消息传递的可靠性、事务等都做了优化,而且性能很好。但是商业版部分功能是收费的,所以使用人群并不多。
4.RabbitMQ:一款完全开源免费的基于ErLang语言编写的软件,依赖AMQP协议,而且功能和性能都很不错,适用于各种规模企业,多种业务场景的使用。
性能比较:Kafka ≈ RocketMQ > RabbitMQ > ActiveMQ
下面开始RabbitMQ的学习,先看几个问题:
Q1、互联网大厂为何都选择RabbitMQ?
美团、滴滴、头条等企业都在使用RabbitMQ,原因在于它有很多优点,比如开源,跨平台,高性能,高可用,提供了可靠的消息投递模式(confirm)以及返回模式(return),与SpringAMQP完美结合,API丰富,集群模式丰富(常用镜像队列模型),表达式配置等等。
Q2、RabbitMQ如何做到高性能?
基于ErLang语言编写,ErLang语音的起初领域是交换机行业,它有着和原生Socket一样的低延迟。
Q3、什么是AMQP协议?
是一个提供统一消息服务的高级消息队列协议,类似于JMS协议(Java Message Service)

Q4、AMQP的核心概念是什么?
Server:又称Broker,接受客户端的连接。
Channel:网络信道,进行消息读写的信道,几乎所有操作都在Channel中进行,客户端可以建立多个Channel,每个Channel代表一个会话任务,类似于Session。
Message:消息,由Properties和Body两部分组成,Properties可以设置消息的优先级,延迟等特性,Body即消息体内容。
Virtual Host:虚拟主机,属于逻辑隔离,是最上层的消息隔离,可以用于隔离服务。同一个Virtual Host中不能存在同名的Exchange或Queue
Exchange:交换机,接收生产者发来的消息,通过Routing Key绑定Queue,消费者可以直接监听Queue来消费消息。
Queue:消息队列,保存消息。
Q5、RabbitMQ的整体架构模型是什么?

Q6、RabbitMQ的内部核心组件以及消息如何流转?
生产者发送消息的时候需要指定Exchange名称,并携带Routing Key,消息就会存储在对应的Queue中。

Keep moving
网友评论