17.1 异步消息简介

与前面几章中介绍的远程调用机制以及 REST 接口类似,异步消息也是用于应用程序之间通信的。但是,在系统之间传递信息的方式上,它与其他机制有所不同。

像 RMI 和 Hessian/Burlap 这样的远程调用机制是同步的。如图 17.1 所示,当客户端调用远程方法时,客户端必须等到远程方法完成后,才能继续执行。即使远程方法不向客户端返回任何信息,客户端也要被阻塞直到服务完成。

图 17.1 如果通信是同步的,客户端必须等待服务完成

消息则是异步发送的,如图 17.2 所示,客户端不需要等待服务处理消息,甚至不需要等待消息投递完成。客户端发送消息,然后继续执行,这是因为客户端假定服务最终可以收到并处理这条消息。

图 17.2 异步通信是一种不需要等待的通信形式

相对于同步通信,异步通信具有多项优势,我们很快就会看到这些优点。但是首先,让我们看看如何异步发送消息。