本文主要对消息队列RocketMQ涉及的专有名词及术语进行定义和解析,方便您更好地理解相关概念并使用消息队列RocketMQ。
消息队列(Message Queue):消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行-它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息;
Message:消息,消息队列中信息传递的载体;
Message ID:消息的全局唯一标识,由RocketMQ系统自动生成,唯一标识某条消息;
Message Key:消息的业务标识,由消息生产者(Producer)设置,唯一标识某个业务逻辑;
MQ:Message Queue;
Topic:消息主题,一级消息类型,通过Topic对消息进行分类;
Tag:消息标签,二级消息类型,用来进一步区分某个Topic下的消息分类;
Producer:消息生产者,也称为消息发布者,负责生产并发送消息;
Producer ID:一类Producer的标识,这类Producer通常生产并发送一类消息,且发送逻辑一致;
Producer实例:Producer的一个对象实例,不同的Producer实例可以运行在不同进程内或者不同机器上;
Consumer:消息消费者,也称为消息订阅者,负责接收并消费消息;
Consumer ID:一类Consumer的标识,这类Consumer通常接收并消费一类消息,且消费逻辑一致;
Consumer实例:Consumer的一个对象实例,不同的Consumer实例可以运行在不同进程内或者不同机器上。一个Consumer实例内配置线程池消费消息;
集群消费:一个Consumer ID所标识的所有Consumer分摊地消费消息。例如某个Topic有9条消息,一个 Consumer ID有3个Consumer实例,那么在集群消费模式下每个实例会对这些条消息进行分摊消费,3个Consumer实例总共消费的消息个数总和为9个;
广播消费:一个Consumer ID所标识的所有Consumer都会各自消费某条消息一次。例如某个Topic有9条消息,一个Consumer ID有3个Consumer实例,那么在广播消费模式下每个实例都会各自消费9条消息;
事务消息:RocketMQ提供类似X/Open XA的分布事务功能,通过RocketMQ事务消息能达到分布式事务的最终一致;
消息堆积:Producer已经将消息发送到RocketMQ服务端,但由于Consumer消费能力有限,未能在短时间内将所有消息正确消费掉,此时在RocketMQ服务端保存着未被消费的消息,该状态即消息堆积;
消息过滤:订阅者可以根据消息标签(Tag)对消息进行过滤,确保订阅者最终只接收被过滤后的消息类型。消息过滤在RocketMQ服务端完成;
消息轨迹:在一条消息从发布者发出到订阅者消费处理过程中,由各个相关节点的时间、地点等数据汇聚而成的完整链路信息。通过消息轨迹,用户能清晰定位消息从发布者发出,经由RocketMQ服务端,投递给消息订阅者的完整链路,方便定位排查问题;
重置消费位点:以时间轴为坐标,在消息持久化存储的时间范围内(默认3天),重新设置消息订阅者对其订阅Topic的消费进度,设置完成后订阅者将接收设定时间点前后一定范围的由消息发布者发送到RocketMQ服务端的消息(消息在重置时间点前后一定范围内会有重复但不会遗漏)