**MQ(Message Queue)消息队列:**是一种用来保存消息数据的队列。 **队列:**数据结构的一种,特征为先进先出。
MQ的作用(优点):1、应用解耦(异步消息发送);2、快速应用变更维护(异步消息发送);3、流量削峰(异步消息发送)。
(缺点):1、系统可用性降低;2、系统复杂度提高;3、异步消息机制:消息顺序性、消息丢失、消息一致性、消息重复使用。
四款MQ区别:
**生产者:**创建消息。
**消费者:**使用/消费消息。
**消息服务器:**存放消息。
**命名服务器:**生产者、消费者、消息服务器靠命名服务器通行,命名服务器负责对接他们。
**消息:**传递的消息包含:主题(主分类),标签(小分类)。
心跳:
监听器:
拉取消费、推动消费:
注册:
环境搭建:
RocketMQ下载地址:https://www.apache.org/
消息发送(重点):
单生产者单消息者消息发送(OneToOne)
单生产者多消息者消息发送(OneToMany)
消费模式:使用消费模式时,需要根据业务来判断,如果业务是需要mq处理同一组数据就用负载均衡模式(默认的,也是常用的),不同则用广播模式。
消息类别
延时消息
批量消息
消息过滤
**分类过滤:**通过主题分类过滤消息,还可以通过主题下的标签分类过滤消息。
**消息过滤(属性过滤/语法过滤/SQL过滤):**生产者服务为消息添加属性,消费者服务使用消息选择器来过滤对应的属性,语法格式为类SQL语法。
顺序消息
防止消息错乱:1、首先发送消息时,要把同一个业务放进一个通道里进行发送。
2、接收消息时,使用单线程的模式从消息队列中取数据,一个线程绑定一个消息队列。虽然这样会降低一点处理消息数据的性能,但是能保证线程在取消息消费的时候不会插队。
事物消息概念与工作过程分析
事物消息状态
事物消息代码实现
集群搭建
RocketMQ集群工作流程
高级特性(重点):
消息持久化与持久化介质
早期的ActiveMQ是把消息存在数据库里的,后期的RocketMQ、Kafaka、RabbitMQ是把消息存在文件系统中。