RocketMQ中专业术语

Producer:消息生产者,负责产生消息,一般由业务系统负责产生消息。

Consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费

Push Consumer: Consumer的 一种,应用通常向Consumer对象注册一个Listener接口,一旦收到消息,Consumer对象立即回调Listener接口方法。

Pull Consumer:Consumer的一种,应用通常主动调用Consumer的拉消息方法从Broker拉消息,主动权由应用控制。

Producer Group:一类Producer的集合名称,这类Producer通常发送一类消息,且发送逻辑一致。

Consumer Group:一类Consumer的集合名称,这类Consumer通常消费一类消息,且消费逻辑一致。

Broker:消息中转角色,负责存储消息,转发消息,一般也称为Server,在JMS规范中称为Provider


广播消费

一条消息被多个Consumer消费,即使这些Consumer属于同一个Consumer Group,消息也会被Consumer Group中的每个Consumer都消费一次,广播消费中的Consumer Group概念可以认为在消息划分方面无意义。


集群消费

一个Consumer Group中的Consumer实例平均分摊消费,例如某个Topic有9条消息,其中一个Consumer Group有3个实例(可能是3个进程,或者3台机器),那么每个实例只消费其中的3条消息。


顺序消息

消费消息的顺序同发送消息的顺序一致,在RocketMQ中,主要指局部顺序,即一类消息为满足顺序性,必须Producer单线程顺序发送,且发送到同一个队列,这样Consumer就可以按照Producer发送顺序去消费。


普通顺序消息

顺序消息一种,正常情况下完全可以保证完全的顺序消息,但是一旦发生通信异常,Broker重启,由于队列总数发生变化,哈希取模后定位的队列会变化,产生短暂的消息顺序不一致,如果业务能容忍在集群异常情况(如某个Broker宕机或重启)消费消息的乱序,使用普通顺序消息比较合适。


严格顺序消息

顺序消息的一种,无论正常异常情况都能保证顺序,但是牺牲了分布式Failover特性,即Broker中只要有一台机器不可用,则整个集群都不可用,服务可用性大大降低。

目前已知的应用只有数据库binlog同步强依赖严格顺序消息,其他应用绝大部分都可以容忍短暂乱序。


Message Queue

在RocketMQ中,所有消息队列都是持久化,长度无限的数据结构,所谓长度无限指队列中每个存储单元都是定长,访问其中的存储单元使用Offset来访问,offset为java long 类型,64位,理论上100年内不会溢出,所以认为长度无限,另外队列中只保存最近几天的数据,之前的数据会按照过期时间来删除。也可以认为MessageQueue是一个长度无限的数组,offset就是下标。

你可能感兴趣的:(MQ)