MQ全称为Message Queue,即消息队列
RocketMQ是阿里开源的一款非常优秀中间件产品,脱胎于阿里的另一款队列技术MetaQ
ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ(rocketMQ)等
RocketMQ由生产者、消息队列、以及消费者单部分组成,他们之间的交互流程为显示消息队列brokder定时发送自身状态到NameServer,然后消息生产者请求NameServer获取消息队列brokder的地址,然后消息生产者将消息发送到brokder中的消息队列,而消费者Consumer订阅了brokder中的消息队列,通过拉去消息,获的生产者生产的消息;
RocketMQ的消息包括基础属性和扩展属性两部分:
基础属性:topic + 消息体(即消息的内容 ) + 消息flag
扩展属性: tag(用于消费消息时进行过滤)+keys (Message 索引键)
注意
Message 的基础属性主要包括消息所属主题 topic , 消息 Flag(RocketMQ 不做处理)、 扩展属性、消息体 。
1)集群模式
一个消费组内的消费者组成一个集群,主题下的一条消息只能被一个消费者消费。
2)广播模式
主题下的一条消息能被消费组下的所有消费者消费。
消费者和broker之间通过推模式和拉模式接收消息,推模式即broker推送给消费者,拉模式是消费者主动从broker 查询消息。
RocketMQ的延迟消息实现非常简单,只需要发送消息前设置延迟的时间,延迟时间存在十八个等级,调用setDelayTimeLevel()设置 与时间相对应的延迟级别即可。