MQ(消息队列)
什么是MQ
在认识MQ之前要知道什么是同步和异步
同步
比如说一个查询业务,通过接口查询商品信息。我发起请求之后立刻获取后端数据这个就是同步。
异步
就是我向你发送请求或者消息之后你可以不用理我,不像同步一样我想你发送请求你必须返回给我数据
RabbitMQ 五种模式
RabbitMQ架构图
-
publisher
:生产者,也就是发送消息的一方 -
consumer
:消费者,也就是消费消息的一方 -
queue
:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理 -
exchange
:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。 -
virtual host
:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchange、queue
1.Simple Queue
简单模式由、消息生产者publisher、队列queue、消息监听者consumer构成。
使用场景:比如点到点聊天,异步发送邮件。
2.Work Queue
工作队列模式,它的特点是多个消费者从一个队列种取消息每个消息只能被消费一次。
默认使用公平分发消息,比如有10个消息两个监听者分别5个。还支持轮询发放(能者多劳)根具消费者处理
的速度进行分配。
使用场景:高并发任务处理如网站订单处理,异步任务系统,多个消费者处理挤压任务,提升处理效率。
3. Publish/Subscribe
发布于订阅模式,通过交换机把消息发送给多个队列,实现一条消息被多个消费者消费(广播消息)。
使用场景:广播消息,向用户推送广告
4.Routing
路由模式,使用交换机(direct类型)和路由键(Routing Key),将消息发送到特定队列。
消息按照路由键精准匹配队列,实现有选择性的消息传递。
5.Topic
主题模式:使用topic类型的交换机,支持模式匹配(如log.*匹配log.error和log。info)
消息通过路由键和模式匹配规则发送到对应队列。
Mybatis xml文件中的常用标签
<select>,<update>,<delete>,<insert>,<if>,<set> ,<where>,<selectKey>,
<include>,<resultMap>,<result>,<id>,<sql>