1.消息生产者、消费消费者、队列
- 消息生产者producer 发送消息到队列
- 消费消费者consumer 从队列接受消息
- broker MQ服务端,把消息从发送端传送到接收端
- 队列queue 消息存储区域。消息按照顺序发送接收,一旦消息被消费处理,该消息将从队列删除。
graph LR
producer -- send --> broker
broker -- receive --> consumer
2.点对点消息队列模型
点对点模型用于 消息生产者和消息消费者点对点之间点对点的通信
graph LR
Sender --> Broker
Broker --> Receiver
点对点包含三个角色
- 消息队列(Queue)
- 发送者 (Sender)
- 接受者 (Receiver)
每个消息都被发送到一个特定的队列,接受者从队列获取消息。队列保留着消息,可以放在内存中持久化,直到被消费或超市
特点
- 每个消息只有一个消费者(Consumer)(一旦被消费,消息就不在消息队列中)
- 发送者和接受者之间在时间上没有依赖性
- 接受者在成功接收消息之后需向消息队列应答成功
发布订阅消息模型
graph LR;
发布者1 --> Topic;
发布者2 --> Topic;
发布者3 --> Topic;
Topic --> 订阅者1;
Topic --> 订阅者2;
Topic --> 订阅者3;
发布订阅模型包含三个角色
- 主题(Topic)
- 发布者(Publisher)
- 订阅者 (Subscribe)
多个发布者将消息发送到Topic,系统将这些消息传送给多个订阅者
特点
- 每个消息可以有多个消费者
- 发布者和订阅者之间有时间上的依赖性
- 针对某个Topic的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息
- 为了消费消息,订阅者必须保持运行状态
点对点和发布订阅的区别
生产者发送一条消息到队列 queue,只有一个消费者能收到
发布者发送到 Topic 的消息,只有订阅了 Topic 的订阅者才能收到消息。