> For the complete documentation index, see [llms.txt](https://potoyang.gitbook.io/spring-in-action-v4/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://potoyang.gitbook.io/spring-in-action-v4/untitled-10/untitled-3.md).

# 17.1　异步消息简介

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

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

![图 17.1 如果通信是同步的，客户端必须等待服务完成](https://3784153818-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LmcjU5gG__lBrRbUxBO%2F-LnqVzb3aV9EnvldYYhX%2F-LnqWCFBDLWFA6pfG2zR%2F17.1%20%E5%90%8C%E6%AD%A5%E9%80%9A%E4%BF%A1.jpg?alt=media\&token=eb9eea5a-c02e-4962-915f-0e6e83f244f5)

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

![图 17.2 异步通信是一种不需要等待的通信形式](https://3784153818-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LmcjU5gG__lBrRbUxBO%2F-LnqVzb3aV9EnvldYYhX%2F-LnqWN3yobZ96lfav1b5%2F17.2%20%E5%BC%82%E6%AD%A5%E9%80%9A%E4%BF%A1.jpg?alt=media\&token=01abd0f8-32dd-4c87-a119-cbc1decea302)

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