- 认识消息服务
- RabbitMQ简介
- RabbitMQ的安装
认识消息服务
在实际项目开发中,有时候需要与其他系统进行集成完成相关业务功能,这种情况最原始的做法是程序内部相互调用,除此之外,还可以使用消息服务中间件进行业务处理,使用消息服务中间件处理业务能够提升系统的异步通信和扩展解耦能力。Spring Boot对消息服务管理提供了非常好的支持。
在多数应用尤其是分布式系统中,消息服务是不可或缺的重要部分,它使用起来比较简单,同时解决了不少难题,例如异步处理、应用解耦、流量削锋、分布式事务管理等,使用消息服务可以实现一个高性能、高可用、高扩展的系统。
异步处理 应用解耦 流量削峰 分布式事务管理RabbitMQ简介
RabbitMQ是基于AMQP协议的轻量级、可靠、可伸缩和可移植的消息代理,Spring使用RabbitMQ通过AMQP协议进行通信,在Spirng Boot中对RabbitMQ进行了集成管理。
RabbitMQ消息代理过程 RabbitMQ工作模式- Work queues(工作队列模式) 需要指定唯一的消息队列进行消息传递,并且可以有多个消息消费者。在这种模式下,多个消息消费者通过轮询的方式依次接收消息队列中存储的消息,一旦消息被某一个消费者接收,消息队列会将消息移除,而接收并处理消息的消费者必须在消费完一条消息后再准备接收下一条消息。适用于那些较为繁重,并且可以进行拆分处理的业务,这种情况下可以分派给多个消费者轮流处理业务。
- Publish/Subscribe(发布订阅模式) 在Publish/Subscribe工作模式中,必须先配置一个fanout类型的交换器,不需要指定对应的路由键(Routing key),同时会将消息路由到每一个消息队列上,然后每个消息队列都可以对相同的消息进行接收存储,进而由各自消息队列关联的消费者进行消费。适用于进行相同业务功能处理的场合,如:用户注册成功,需要发送短信及邮件通知,那么邮件服务消费者和短信服务消费者需要共同消费“用户注册成功”这条消息。
- Routing(路由模式) 在Routing工作模式中,必须先配置一个direct类型的交换器,并指定不同的路由键值(Routing key)将对应的消息从交换器路由到不同的消息队列进行存储,由消费者进行各自消费。适用于进行不同类型消息分类处理的场合,如:日志的收集处理,用户可以配置不同的路由键,分别对不同级别的日志信息进行分类处理
- Topics(通配符模式) 在Topics工作模式中,必须先配置一个topic类型的交换器,并指定不同的路由键值(Routing key)将对应的消息从交换器路由到不同的消息队列进行存储,然后由消费者进行各自消费。适用于根据不同需求动态传递处理业务的场合,如:一些用户只订阅邮件信息;一些客户只订阅短信信息。则可以根据用户的需求进行动态的路由匹配,从而将订阅信息发送至不同的消息队列
- RPC RPC模式是一个回环结构,主要针对分布式架构的消息传递业务,客户端Client先发送消息到消息队列,远程服务端Server获取消息,然后再写入另一个消息队列,向原始客户端Client响应消息处理结果。适用于远程服务调用的业务处理场合
- Headers较少使用,略
RabbitMQ的安装 下载安装
一般来说安装 RabbitMQ 之前要安装 Erlang (RabbitMQ依赖于Erlang),可以去Erlang官网下载。接着去RabbitMQ官网下载安装包,之后解压缩即可。为方便起见,提供Erlang和RabbitMQ的下载:
文件下载 | 文件名称:Erlang23.1 | 文件大小:90.26MB |
| 下载声明:本站文件大多来自于网络,仅供学习和研究使用,不得用于商业用途,如有版权问题,请联系博主! | ||
| 下载地址:Erlang下载 | ||
文件下载 | 文件名称: | 文件大小:17.06MB |
| 下载声明:本站文件大多来自于网络,仅供学习和研究使用,不得用于商业用途,如有版权问题,请联系博主! | ||
| 下载地址:RabbitMQ下载 | ||
此外,可设置为开机自启动,方便使用
RabbitMQ可视化效果展示RabbitMQ可视化效果展示, RabbitMQ默认提供了两个端口号5672和15672,其中5672用作服务端口号,15672用作可视化管理端口号。在浏览器上访问http://localhost:15672/(用户名和密码默认均为guest)
若无法访问,是因为缺少插件,需在RabbitMQ的安装目录运行以下命令
rabbitmq-plugins enable rabbitmq_managementSpringBoot整合RabbitMQ环境搭建
导入依赖
org.springframework.boot spring-boot-starter-amqp
编写配置
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
virtualHost: /
最后一行配置RabbitMQ虚拟主机路径/,默认可以省略



