各个消息队列框架的介绍
ActiveMQ:apache出品,能力强劲的开源消息总线,完全支持jms规范的消息中间件。api丰富,在传统行业的中小
型企业中应用广泛。缺点:服务性能和数据存储性能不好。
kafka:apache顶级项目,追求高吞吐量。一开始的目的是用于日志收集和传输。不支持事务,对消息重复,丢失,
错误没有严格的要求。适合产生大量数据的互联网服务的数据收集业务。
rocketMQ:阿里开源中间件,目前已经孵化为apache顶级项目,纯java开发。思路起源于kafka,对消息的可靠性
传输和事务性做了优化。特点:高吞吐量,高可用,适合大规模分布式系统应用。目前在阿里集团被广泛使用,用于
交易,充值,流计算,日志处理,消息推送等。
高性能,高可靠性,支持分布式,支持事务,集群水平的扩展,上亿级别消息的堆积,主从之间的自由切换等表现良
好,但是商业版收费。很多功能不对外公布。
为什么选择RabbitMQ
RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是
使用ErLang语言来编写的,并且是基于AMQP协议的。
1. 开源的消息中间件
2. 可以跨平台,跨语言。数据的生成和消费可以是不同的语言。
为什么使用?
开源,性能优秀
提供可靠性消息投递模式,返回模式
与springAMQP完美的整合
集群模式丰富,表达式配置,HA模式,镜像队列模型。
RabbitMQ的高性能之道是如何做到的
1. Erlang语言最初用于交换机领域,这样使RabbitMQ在Broker之间进行数据交互的性能是非常优秀的。
2. Erlang有着和原生Socket一样的延迟。
什么是AMQP协议
高级消息队列协议Advanced Message Queuing Protocol
是具有现代特征的二进制协议。是一个提供统一消息服务的的应用层标准高级消息队列协议,是应用层协议的一个开
放标准,为面向消息的中间件设计。
是一个规范,里面有很多的概念,我们开发的时候按着他这个标准走就可以了。
AMQP核心概念