MQ(Message Queue)消息队列,就是消息在传输过程中用于保存消息的容器,在一次发送接收的通信过程中,其主要充当了中转站的角色,内部提供通信路由并保证消息的可靠传递。如果发送消息时接收者不可用,消息队列本身会在一段时间内保留积压的消息,直到可以成功地传递。目前,消息队列已经逐渐成为企业IT系统内部通信的核心手段之一,当前绝大部分的大型分布式互联网业务系统都是基于消息队列来构建的。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列的功能,成为异步通信的主要手段之一。阿里云消息队列RocketMQ产品目前提供TCP协议层面的接入方式,支持Java语言的客户端,方便不同编程语言开发的应用快速接入RocketMQ消息云服务。用户可以将应用部署在阿里云阿里云服务器、企业自建云与RocketMQ云服务建立连接进行消息收发,同时本地开发者也可以通过公网接入RocketMQ服务完成消息收发。
核心概念
Topic:消息主题,一级消息类型,生产者向其发送消息。
生产者:也称为消息发布者,负责生产并发送消息至Topic。消费者:也称为消息订阅者,负责从Topic接收并消费消息。消息:生产者向Topic发送并最终传送给消费者的数据和(可选)属性的组合。消息属性:生产者可以为消息定义的属性,包含Message Key和Tag。
消息收发模型消息队列RocketMQ支持发布/订阅模型,消息生产者应用创建Topic并将消息发送到Topic。消费者应用创建对Topic的订阅以便从其接收消息。通信可以是一对多(扇出)、多对一(扇入)和多对多。具体通信:
生产者集群:用来表示发送消息应用,一个生产者集群下包含多个生产者实例,可以是多台机器,也可以是一台机器的多个进程,或者一个进程的多个生产者对象。一个生产者集群可以发送多个Topic消息。发送分布式事物消息时,如果生产者中途意外宕机,Broker 会主动回调生产者集群的任意一台机器来确认事务状态。
消费者集群:用来表示消费消息应用,一个消费者集群下包含多个消费者实例,可以是多台机器,也可以是多个进程,或者是一个进程的多个消费者对象。一个消费者集群下的多个消费者以均摊方式消费消息。如果设置的是广播方式,那么这个消费者集群下的每个实例都消费全量数据。
RocketMQ功能特性概览接入支持支持 TCP 协议:区别于 HTTP 简单的接入方式,提供更为专业、可靠、稳定的Java语言版本SDK。
管理工具
Web控制台:支持Topic管理、生产者管理、消费者管理、消息查询、消息轨迹和资源报表;mqadmin命令集:专有云输出提供一套丰富的管理命令集,以命令方式对RocketMQ服务进行管理;
消息类型
普通消息:无特性的消息,区别于顺序消息和事务消息;顺序消息:对于指定的一个Topic,所有消息将按照严格的先入先出(FIFO)的顺序,进行顺序发布和顺序消费;
事务消息:RocketMQ提供类似X/Open XA的分布事务功能,通过RocketMQ事务消息能达到分布式事务的最终一致;
定时/延时消息:允许用户自定义消息生产者对指定消息进行在某一特定时间投递/延长某一时长进行投递。
特色功能消息查询:消息队列RocketMQ提供了三种消息查询的方式,分别是按Message ID、Message Key 以及Topic查询;
消息轨迹:通过消息轨迹,能清晰定位消息从生产者发出,经由消息队列RocketMQ服务端,投递给消息消费者的完整链路,方便定位排查问题;
集群消费:当使用集群消费模式时,消息队列RocketMQ认为任意一条消息只需要被消费者集群内的任意一个消费者处理即可;
广播消费:当使用广播消费模式时,消息队列RocketMQ会将每条消息推送给消费者集群内所有注册过的消费者,保证消息至少被每台机器消费一次;
重置消费位点:根据时间或位点重置消费进度,允许用户进行消息回溯或者丢弃堆积消息;
死信队列:将无法正常消费的消息储存到特殊的死信队列供后续处理;
资源报表:消息生产和消费数据的统计功能。通过该功能,您可查询在一段时间范围内发送至某Topic的消息总量或者TPS(消息生产数据),也可查询在一个时间段内某Topic投递给某Consumer ID的消息总量或TPS(消息消费数据);
全球消息路由:用于不同地域之间的消息同步,确保地域之间数据的一致性;您可以通过所有消息,也可按照过滤规则,例如通过指定的Tag将消息过滤之后再进行同步。
灵活部署(1)支持专有云独立部署,同时支持混合云架构;(2)专有云支持mqadmin命令集,方便管控平台集成以及统一运维;