17.3 使用 AMQP 实现消息功能

你可能会疑惑为什么还需要另外一个消息规范。难道 JMS 还不够好吗?AMQP 提供了哪些 JMS 所不具备的特性呢?

实际上,AMQP 具有多项 JMS 所不具备的优势。首先,AMQP 为消息定义了线路层(wire-level protocol)的协议,而 JMS 所定义的是 API 规范。JMS 的 API 协议能够确保所有的实现都能通过通用的 API 来使用,但是并不能保证某个 JMS 实现所发送的消息能够被另外不同的 JMS 实现所使用。而 AMQP 的线路层协议规范了消息的格式,消息在生产者和消费者间传送的时候会遵循这个格式。这样 AMQP 在互相协作方面就要优于 JMS —— 它不仅能跨不同的 AMQP 实现,还能跨语言和平台。

相比 JMS,AMQP 另外一个明显的优势在于它具有更加灵活和透明的消息模型。使用 JMS 的话,只有两种消息模型可供选择:点对点和发布-订阅。这两种模型在 AMQP 当然都是可以实现的,但 AMQP 还能够让我们以其他的多种方式来发送消息,这是通过将消息的生产者与存放消息的队列解耦实现的。

Spring AMQP 是 Spring 框架的扩展,它能够让我们在 Spring 应用中使用 AMQP 风格的消息。稍后可以看到,Spring AMQP 提供了一个 API,借助这个 API,我们能够以非常类似于 Spring JMS 抽象的形式来使用 AMQP。这意味着,我们在本章之前所学习的 JMS 内容能够帮助你理解如何使用 Spring AMQP 来发送和接收消息。

我们稍后就会介绍如何使用 Spring AMQP,但是在深入学习如何在 Spring 中发送和接收消息之前,首先看一下到底是什么让 AMQP 如此引人关注。

Last updated

Was this helpful?