异步消息是应用程序之间通用的交流方式。异步消息通信与同步RPC相比有几个优点。间接通信带来了应用之间的松散耦合,因此减轻了其中任意一个应用崩溃所带来的影响。此外,因为消息转发给了收件人,因为发送者不必等待响应,在很多情况下,可以提高应用的性能。
应用程序之间使用异步通信:JMS与AMQP
基于浏览器的客户端和服务器之间的异步通信:WebSocket
JMS消息模型
JMS中,有三个主要的参与者,消息的生产者、消息的消费者以及在生产者和消费者之间的传递消息的通道(队列或主题)。
在JMS中,通道有助于解耦消息的生产者和消费者,但是这两者依然会与通道相耦合。生产者会将消息发布到一个特定的队列或主题上,消费者从特定的队列或主题上接收到这些消息。通道具有双重责任,也就是传递数据以及确定这些消息该发送到什么地方,队列的话会使用点对点算法发送,主题的话就使用发布-订阅的方式。
AMQP
无论是使用Spring JMS还是Spring AMQP,都首先需要配置一个连接工厂,连接工厂负责消息的发送与接收。发送端,连接工厂将对象封装为消息对象,发送至消息队列;接收端,对消息队列进行监听,当有消息到来时,对消息进行接收。