> For the complete documentation index, see [llms.txt](https://jun-wang.gitbook.io/learnjava/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jun-wang.gitbook.io/learnjava/ji-shu-xue-xi/jia-gou-xue-xi/mq-tui-la-mo-shi-dui-bi.md).

# MQ推拉模式对比

消息队列比较核心的应用场合有三个：解耦、异步和削峰，在消息队列中一种常用的消息推送类型是推拉模式。

## 一、Push推模式

推模式是服务器端根据用户需要，由目的、按时将用户感兴趣的信息主动发送到用户的客户端。

### 1.1 Pus模式优点

* 对用户要求低，方便用户获取需要的信息
* 及时性好，服务器端及时地向客户端推送更新动态信息，吞吐量大

### 1.2 Push模式缺点

* 不能确保发送成功。Push模式采用广播方式，只有服务器端和客户端在同一个频道上，推模式才有效，用户才能接收到信息；
* 没有信息状态跟踪。Push模式采用开环控制技术，一个信息推送后的状态，比如客户端是否接收等，无从得知；
* 针对性较差。推送的信息可能并不能满足客户端的个性化需求。

## 二、Pull拉模式

拉模式是客户端主动从服务器端获取信息。

### 2.1 拉模式优点

* 针对性强，能满足客户端的个性化需求
* 信息传输量较小，网络中传输的只是客户端的请求和服务器端对该请求的响应
* 服务器端的任务轻。服务器端只是被动接收查询，对客户端的查询请求做出响应

### 2.2 拉模式的缺点

* 实时性较差，针对于服务器端实时更新的信息，客户端难以获取实时信息
* 对于客户端用户的要求较高，需要对服务器端具有一定的了解。
