目录
1. 主流消息中间件
- ActiveMQ 最流行,完全支持JMS规范,不适合在高并发下使用,API丰富 性能不好
- Kafka 分布式发布-订阅消息系统,基于pull模式来处理消息,追求吞吐量,不支持十五,对消息的重复,丢失,错误没有严格要求 关注性能
- RocketMQ 阿里开源 Java编写 高吞吐高性能 适合大规模分布式系统,思路起源于Kafka 保证消息顺序 支持分布式事务 上亿消息堆积 商业版收费
- RabbitMQ Erlang开发 AMQP协议实现 一致性,稳定性,可靠性比较好。 对性能和吞吐量的要求还在其次
2. 衡量一个MQ指标
- 服务性能
- 数据存储
- 集群架构
3. RabbitMQ介绍
RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang语言开发,RabbitMQ基于AMQP协议
4. RabbitMQ高性能的原因
- Erlang语言 在数据交换 数据同步方面非常优秀
- Erlang有点 Erlang有和原生Scoket一样的延迟
5. 什么是AMQP
是具有现代特征的二进制协议 ,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向对象的中间件设计
6. AMQP核心概念
- Server 又称broker 接受客户端的连接
- Channel 网络通道,是进行消息读写的通道 每个Channel代表一个会话任务
- Message 消息 由properties 和 body组成,properties可以对消息修饰,body就是消息内容
- Virtual host 虚拟地址 用于逻辑隔离 最上层的消息路由 一个Virtual host里面不能有相同名称的Exchange或Queue
- Exchange 交换机 接收消息 根据路由键转发消息到绑定的队列
- Binding Exchange和Queue之间的虚拟连接,binging中可以包含routingKey
- RoutingKey 一个路由规则 虚拟机可以用它来确定如何路由一个特定消息
- Queue 也称为MessageQueue 消息队列 保存消息并将他们转发给消费者
7. RabbitMQ整体架构
生产者不需要关注投递到哪个队列
消费者不需要关注消息从哪里来
来源:CSDN
作者:weixin_42195284
链接:https://blog.csdn.net/weixin_42195284/article/details/90106280