1.基础

予早 2025-02-21 01:08:23
Categories: Tags:

简介

RabbitMQ是一个消息代理,生产者发送消息到RabbitMQ,RabbitMQ接收、存储、路由消息到队列,消费者从队列接收消息。

RabbitMQ具体如何处理消息与采用的协议有关,以AMQP 0-9-1为例,生产者发布消息到交换机,交换机路由消息到交换机或者队列,可达消息最终到达队列,消费者从队列接受消息。

主要概念

VirtualHost:虚拟主机,实现多租户隔离,默认虚拟主机为/

User:用户,RabbitMQ的用户,默认用户为guest/guest

Message:消息,包含元信息property和内容payload

Producer:生产者,发送消息的用户程序,用户程序可以同时作为生产者和消费者

Consumer:消费者,接受消息的用户程序,用户程序可以同时作为生产者和消费者

Queue:队列,存储消息,无默认队列

Exchange:交换机,路由消息,默认交换机为空字符串""标识的交换机

对比

  1. 异步。同步状态下支付服务与订单服务、仓储服务、短信服务等位于同一调用链,需要所有完成才能返回最终结果完成一次完成调用。使用消息队列可以拆分调用链,支付服务与其他服务不在同一调用链。调用链变短提高了接口吞吐量。
  2. 解耦。服务间没有强依赖,没有级联关系。
  3. 削峰。流量突发由消息队列作为缓冲垫。

同步调用

异步调用

相关资料

官方文档:https://www.rabbitmq.com/docs

Release Information:

Install and Upgrade:https://www.rabbitmq.com/docs/download

AMQP协议:https://www.rabbitmq.com/tutorials/amqp-concepts

Spring AMQP

Spring AMQP是基于AMQP定义的API规范,提供了模板来发送和接收消息。其包含两部分,其中spring-amqp是基础抽象,spring-rabbit是底层默认实现。Spring AMQP中消息的序列化和反序列化使用MessageCOnverter实现,默认是JDK序列化,注意发送方与接收方必须使用相同的MessageConverter。