跳转到内容

Spring AMQP


AMQP(高级消息队列协议) 是一种用于 消息中间件 的通信协议,它让不同的系统之间可以 可靠地 发送和接收消息。可以把它想象成一个 智能快递系统——生产者(发送方) 把消息交给 交换机(调度中心),交换机按照规则把消息投递到 队列(快递存放点),然后 消费者(接收方) 从队列里取出消息进行处理。这种方式让系统可以 解耦,并支持 异步处理,提高了系统的可靠性和扩展性。RabbitMQ 就是 AMQP 的一个常见实现。

  • 跨平台、跨语言:不同的语言和平台可以基于 AMQP 进行通信。
  • 可靠消息传输:支持持久化、确认机制、死信队列等,保证消息不会丢失。
  • 异步通信:解耦系统,提高性能,避免同步阻塞。
  • 消息路由:支持复杂的路由规则,实现灵活的消息分发机制。
  • 事务支持:可以确保消息的 生产消费 是事务性的。
组件作用
Producer(生产者)发送消息的应用程序
Broker(消息代理)负责接收、存储和路由消息,如 RabbitMQ
Exchange(交换机)负责将消息路由到正确的队列
Queue(队列)存储消息,直到消费者消费
Consumer(消费者)监听队列,并处理消息

Spring AMQP(Spring Advanced Message Queuing Protocol) 是 Spring 提供的一套用于支持 AMQP(高级消息队列协议)的封装框架。它可以帮助开发者在 Spring 应用中方便地集成基于 AMQP 的消息中间件(如 RabbitMQ)。

  • spring-amqp:提供 AMQP 协议的抽象封装,定义了操作 RabbitMQ 所需的核心接口和类。
  • spring-rabbit:在 spring-amqp 之上,提供对 RabbitMQ 的具体实现和整合。
  1. **提供模板类 RabbitTemplate:**负责消息的发送与接收(类似于 JdbcTemplate)。
  2. **支持 @RabbitListener 监听队列:**通过注解方式实现消息的异步监听,简化消费者逻辑。
  3. **支持消息的序列化与反序列化:**内置支持 JSON、Java 序列化等格式,也可自定义序列化方式。
  4. **支持事务管理:**通过 RabbitTransactionManager 支持事务性消息处理。
  5. **支持消息确认(ACK)机制:**保障消息可靠投递,支持自动和手动确认机制。
  6. **提供基于 Spring Boot 的自动配置:**通过 spring-boot-starter-amqp,可以快速集成 RabbitMQ。