消息发送与接收,存在同步机制与异步机制。

同步机制

消息发送与消息接收存在先后关系,例如先执行消息发送,发送结束后,紧接着就会堵塞当前自身的进程,不与其他应用进行任何的通信以及交互,等待接收程序的响应,待发送消息得到接收程序的返回消息之后会继续向下运行,进行下一步的业务处理。

试用场景:请求数据查询

  1. 组织数据查询请求这帧消息
  2. 将请求消息进行发送
  3. 发送完毕后,立即进入消息接收状态,在里面循环等待,直到等到请求响应帧,将响应的数据返回。或者没有等到响应帧,可以设置一个超时时间,超过超时时间后,返回请求失败。

异步机制

消息发送和消息接收没有先后关系,相互独立,接收和发送可以同时进行。

试用场景:qq聊天

  1. 消息发送和消息接收相互独立,无需等待。
  2. 可以持续发送也可以持续接收。
  3. 可以边发送边接收

异步机制是否可以取代同步机制?

虽然异步机制优点颇多,但是其无法取代同步机制,有些场合适用同步机制却不适用异步机制。例如:

数据查询,需要及时获取结果,然后用此结果去执行其他操作。来看看同步机制与异步机制处理此问题的区别:

  1. 异步机制中,消息发送和接收是相互独立的,不一定在同一线程中,且需要在接收线程中才能得到查询结果,这样获取的结果需要花功夫搬运到查询的地方,很麻烦。
  2. 同步机制可以完美解决此问题,发送完查询请求后,阻塞,就地等待查询结果,拿结果就地解决问题,无需像同步机制一样将结果从接收线程中搬运过来。