SpringBoot消息服务

SpringBoot消息服务RabbitMQ

在实际开发项目中,有的时候需要与其他系统进行集成完成相关业务功能,这种情况最原始的做法是程序内部相互调用,除此之外,还可以使用消息服务中间件进行业务处理,使用消息服务中间件处理业务能够提升系统的异步通信和扩展解耦能力。ApringBoot对消息服务管理提供了非常好的支持。
主要针对SpringBoot与RabbitMQ消息中间件的整合进行,包括RabbitMQ消息中间件的基本概念与用法、SpringBoot对RabbitMQ工作模式的整合使用。

消息服务概述

为什么使用消息服务

在多数应用尤其是分布式系统中,消息服务是不可或缺的重要部分,它使用起来比较简单,同时解决了不少难题,例如异步处理、应用解耦、流量削锋、分布式事务管理等,使用消息服务可以实现一个高性能、高可用、高扩展的系统。

异步处理

说明:用户注册后,系统需要将信息写入数据库,并发送注册邮件和注册短信通知。而通知方式有三种:串行处理 并行处理 消息服务处理方式
1.串行处理:用户发送注册请求,服务器会先将注册信息写入数据库,依次发送注册邮件和注册短信,服务器只有在消息处理完毕后才会将处理结果返回客户端。这种方式处理消息的方式非常耗时,用户体验不好
2.并行处理:用户发送注册请求后,将注册信息写入数据库,同时进行注册邮件和注册短信的发送,最后返回给客户端,虽然一定程度上提高了后台业务处理的效率,但是如果遇到比较耗时的业务处理,仍然不好
3.消息服务处理方式:可以在业务中嵌入消息服务进行业务处理,这种方式先将注册信息写入数据库,在极短的时间内将注册信息写入消息队列后即可返回响应信息。此时前端业务不需要理会不相干的后台业务处理,而发送注册邮件和短信的业务会自动获取消息队列中的相关消息进行后续业务处理

应用解耦

说明:用户下单后,订单服务需要通知库存服务。
传统的处理方式是:用户下单后,订单服务会直接调用库存服务接口进行库存更新,这种方式最大的问题是:一旦库存系统出现异常,订单服务会失败导致订单丢失。如果使用消息模式,订单服务下的订单消息会快速写入消息队列,库存服务会监听并读取到订单,从而修改库存。相比起来,消息服务模式显得更加高效、可靠

流量削峰

说明:秒杀活动是流量削峰的一种应用场景,由于服务器处理资源能力有限,所以会出现峰值,容易造成服务器宕机、用户无法访问的情况。解决方式:通常会采用消息队列缓冲瞬时高峰流量,对请求进行分层过滤,从而过滤掉一些请求。
根据说明,如果专门增加服务器来应对的话,在非活动中,这些服务器会没有,比较浪费;如果不进行处理,会压垮服务器。比较理想的方案是,通过在应用前端加入消息服务,先将所有的请求写入消息队列,并限定一定的阈值,多余的直接返回秒杀失败,然后服务会根据规则从消息队列中读取并处理有限的请求

分布式事务管理

RabbitMQ消息中间件

RabbitMQ安装以及整合环境

SpringBoot与RabbitMQ整合实现

练习题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值