1、RocketMq介绍
RocketMq作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。
1.1、RocketMq的特点
- 支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型。
- 在一个队列中可靠的先进先出(FIFO)和严格的顺序传递。(RocketMq可以严格的保证消息的顺序)
支持推(Push) 和 拉(pull)两种消息模式。
拉(pull)就是消费者拉去MQ中拉取消息,而push是MQ给消费者推送消息。
- 单一队列百万消息的堆积能力(RocketMq提供亿级消息的堆积能力,而重点是在亿级消息堆积之后,依然保持写入低延迟)
- 支持多种消息队列,如JMS、MQTT等等...
- 分布式高可用架构,满足至少一次消息传递语句。
- 提供Docker镜像用于隔离测试和云集群部署。
- 提供配制、指标和监控等丰富的控制。
1.2、RocketMq的优势所在
目前主流的 MQ 主要是 RocketMQ、ActiveMq、kafka、RabbitMQ,其主要优势有:
- 支持事务型消息(消息发送和 DB 操作保持两方的最终一致性,RabbitMQ 和 Kafka 不支持)
- 支持结合 RocketMQ 的多个系统之间数据最终一致性(多方事务,二方事务是前提)
- 支持 18 个级别的延迟消息(Kafka 不支持)
- 支持指定次数和时间间隔的失败消息重发(Kafka 不支持,RabbitMQ 需要手动确认)
- 支持 Consumer 端 Tag 过滤,减少不必要的网络传输(即过滤由MQ完成,而不是由消费者完成。RabbitMQ 和 Kafka 不支持)
- 支持重复消费(RabbitMQ 不支持,Kafka 支持)