消息传递模式:点对点和发布_订阅模式
发布时间: 2023-12-15 12:34:13 阅读量: 77 订阅数: 43
activeMq点对点和发布/订阅模式demo
5星 · 资源好评率100%
# 1. 引言
## 1.1 消息传递模式简介
消息传递模式是一种在分布式计算和通信系统中使用的模式,它允许不同的组件或系统之间通过消息进行通信和交互。在消息传递模式中,消息是以数据包的形式从发送者传递到接收者,通常通过网络或消息队列来实现。
## 1.2 为什么需要点对点和发布-订阅模式
在实际的应用中,我们经常需要将信息传递给指定的接收者或者广播给多个接收者。点对点模式和发布-订阅模式是常用的两种消息传递模式,它们分别适用于不同的场景。
点对点模式适用于需求明确、接收者数量固定的场景,可以确保消息被准确地传递给指定的接收者。
发布-订阅模式适用于需要广播消息给多个接收者的场景,一个发送者可以发布消息,多个接收者可以订阅该消息,这样可以实现一对多的通信和交互。
## 2. 点对点模式
- 概述
- 工作原理
- 优点与缺点
- 使用场景
### 3. 发布-订阅模式
发布-订阅模式是一种消息传递模式,也被称作消息总线、事件总线。在这种模式下,消息生产者(发布者)不会直接发送消息给特定的消息消费者(订阅者),而是通过消息代理(或称为消息队列或事件总线)来进行消息的分发。订阅者可以通过订阅感兴趣的主题(topic)或标签(tag)来接收消息。
#### 概述
在发布-订阅模式中,发布者(Publisher)负责向消息代理发送消息,而订阅者(Subscriber)则向消息代理注册自己感兴趣的消息。当有新消息被发布时,消息代理将消息分发给所有对该主题感兴趣的订阅者。
#### 工作原理
1. 发布者发布消息到消息代理。
2. 订阅者通过订阅感兴趣的主题或标签。
3. 消息代理收到发布的消息后,将消息分发给所有订阅了相关主题或标签的订阅者。
#### 优点与缺点
##### 优点
- 发布者和订阅者解耦,互相独立。
- 支持一对多的消息传递,适用于广播场景。
##### 缺点
- 订阅者需要对消息代理的存在进行感知,增加了系统复杂度。
- 无法直接保证消息的顺序性。
#### 使用场景
- 实时数据更新:比如股票价格变动通知。
- 分布式系统间通信:各个服务之间的解耦通信。
#### 4. 对比与区别
在本章节中,我们将来对比和区分点对点模式和发布-订阅模式,以便更好地理解它们的不同之处,并更好地选择适用的模式。
##### 点对点模式和发布-订阅模式的区别
- **通信方式**:点对点模式是一对一的通信方式,消息从发送方直接传递给接收方。而发布-订阅模式是一对多的通信方式,消息由发布者发送给多个订阅者。
- **依赖关系**:点对点模式中,发送方和接收方之间存在直接的依赖关系。而在发布-订阅模式中,发布者和订阅者之间没有直接的依赖关系,它们通过消息中间件进行消息传递。
- **消息投递方式**:点对点模式中,消息通常是同步投递的,即发送方发送消息后会一直等待接收方的响应。而在发布-订阅模式中,消息通常是异步投递的,发布者发送消息后不会立即等待订阅者的响应。
- **消息处理方式**:点对点模式中,消息由接收方进行处理。而在发布-订阅模式中,消息通常由消息中间件进行分发给订阅者,订阅者根据自己的需求对消息进行处理。
- **对消息的选择性**:点对点模式中,只有发送方和接收方之间约定好的消息才会被传递。而在发布-订阅模式中,订阅者可以根据自己的需求选择订阅感兴趣的消息。
- **扩展性**:点对点模式中,系统的扩展性相对较差,因为每次新增参与者都需要建立新的连接。而在发布-订阅模式中,参与者的新增不影响系统的整体结构,只需要将新的订阅者注册到消息中间件即可。
##### 选用哪种模式的考虑因素
选用点对点模式还是发布-订阅模式应该根据具体的需求和场景来决定。
- 如果需要一对一的通信方式,且发送方和接收方之间存在直接的依赖关系,可以选择点对点模式。
- 如果需要一对多
0
0