RabbitMQ
RabbitMQ
1. 简介
RabbitMQ是一个开源的消息代理和队列服务器,用来通过共同的协议传递消息,支持多种消息协议。它是用Erlang语言编写的,因此具有高并发和高可靠性的特点。RabbitMQ允许软件应用程序之间的松散耦合,这意味着系统的不同部分可以独立地接收、处理和转发消息,从而提高了系统的灵活性和可扩展性。
RabbitMQ与OpenFeign的区别:
- 通信方式:OpenFeign 实现了同步的服务间调用,而 RabbitMQ 提供了异步的消息传递能力。
- 使用场景:OpenFeign 适用于对实时性要求高(实现同步牺牲性能)的直接服务调用,RabbitMQ 适合于需要异步处理、消息可靠传递或者实现系统间解耦的场景。(不追求同步提升性能)
- 技术栈:OpenFeign 主要在 Spring Cloud 环境中使用,用于简化微服务之间的HTTP调用;RabbitMQ 作为一个独立的消息队列服务,可以被任何能够与其通信的应用程序所使用,不限于 Java 或 Spring 应用。
2. 管控台操作
访问默认的15672端口来使用RadditMQ的管控台
2.1 消息队列配置


2.2 交换机配置


3.SpringAMQP
3.1 导入SpringAMQP依赖
RabbitMQ官方提供的Java客户端编码相对复杂,一般生产环境下我们更多会结合Spring来使用。而Spring的官方刚好基于RabbitMQ提供了这样一套消息收发的模板工具:SpringAMQP。并且还基于SpringBoot对其实现了自动装配,使用起来非常方便。
使用SpringAMQP需要加入相应的依赖 生产者和消费者都需要
1 | |
3.2 配置application.yml文件
生产者和消费者都需要
1 | |
3.3 “Hello World!” 简单的模式
3.3.1 创建消息队列
作为容器注入由Spring管理
1 | |
3.3.2 配置消费者接收
1 | |
3.3.3 配置生产者发送
使用测试类发送,实际场景中可以直接注入RabbitTemplate直接使用
1 | |
3.4 WorkQueues模型
当消息处理比较耗时的时候,可能生产消息的速度会远远大于消息的消费速度。长此以往,消息就会堆积越来越多,无法及时处理。
此时就可以使用work 模型,多个消费者共同处理消息处理,消息处理的速度就能大大提高了。