消息队列RabbitMQ、整合SpringBoot

本文介绍了消息队列RabbitMQ的基本概念,包括JMS、AMQP、消息队列的形式及其应用场景,并详细讲解了RabbitMQ的安装、交换器类型及转发策略。接着,文章展示了如何在SpringBoot中整合RabbitMQ,包括创建Exchange、Queue和Binding,以及生产者和消费者的实现。
摘要由CSDN通过智能技术生成

一、消息队列相关概念

消息队列(message queue)

消息队列是应用系统之间通信的方法,本质是队列,具有先进先出(FIFO)的特点,队列的元素是消息,所以叫消息队列,是一种中间件。

JMS

Java Message Service,即 Java 消息服务,是基于 JVM 消息代理的规范。实现:ActiveMQ 。

AMQP

Advanced Message Queuing Protocol,即高级消息队列协议,也是一个消息代理的规范,兼容 JMS。实现:RabbitMQ。
Spring中对消息队列的支

消息队列的两种形式:点对点和广播

  • 点对点式:消息发送者发送消息,消息代理将其放入到一个队列中,消息接受者从队列中获取消息内容,消息读取后被移出队列。消息只有唯一的发送者和接受者,但是并不是说只能有一个接受者。(意思应该就是可以有多个消费者去拿这个消息,但最终只有一个消费者拿到)
  • 发布(publish)/订阅(subscribe)式:发送者发送消息到主题,多个接受者监听这个主题,那么就会在消息到达的时候同时接受到消息

应用场景

  1. 场景说明:用户注册后,需要发送邮件和短信,然后返回客户端完成验证,传统方式有串行和并行方式。(异步处理)
串行方式:将注册信息写进数据库后,再发送邮件,然后发送短信,三个操作完成后才返回客户端,很慢。
并行方式:将注册信息写进数据库后,再同时发送邮件和短信,三个操作完成后返回客户端,比较慢。
消息队列:将注册信息写进数据库后,再写进消息队列,然后返回客户端。由消息队列进行异步操作。
  1. 场景说明:双十一购物节,用户下单后,订单系统调用库存系统的库存接口,传统做法时库存系统出现故障,订单就会失败,订单系统和库存系统高耦合,引入消息队列后:用户下单后,订单系统完成持久化处理,把消息写进消息队列返回到客户端,库存系统订阅下单消息进行库操作。(应用解耦)
  2. 场景说明:秒杀活动,服务器接收到请求后写进消息队列,假如超过消息队列长度则直接抛弃用户请求或者跳转到错误页面(流量削峰),否则才进入秒杀服务系统

其他概念

Message:消息,消息是没有名字的,由消息头和不透明的消息体组成,消息体包括routing-key、priority等属性

Publisher:消息生产者

Exchange:交换器,用来接收生产者发送的消息并且将消息按路由传给服务器中的队列。有四种交换器,跟不同的转发策略有关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值