目录
初识RabbitMQ
1.什么是RabbitMQ
RabbitMQ是一个开源的消息代理和队列服务器,它基于高级消息队列协议(AMQP)设计。RabbitMQ可以作为消息代理、任务队列、事件传输系统等,广泛应用于分布式系统和微服务架构中
2.RabbitMQ同时支持同步调用和异步调用
1.同步(Synchronous):
在同步模式下,生产者发送消息后,会等待直到消息被确认或者被拒绝,然后才继续执行后
续的操作。
这种方式确保了消息的发送和接收是顺序进行的,适用于需要严格顺序控制的场景
优点:
时效性强,等待结果后返回
缺点:
扩展性差
性能下降
级联失败问题
2.异步(Asynchronous):
在异步模式下,生产者发送消息后,不需要等待消息确认,就可以继续发送下一条消息或者
执行其他任务。
这种方式可以提高消息处理的吞吐量,因为生产者不需要等待每条消息的确认。
异步模式通常用于消息量大、对实时性要求不高的场景,或者当消费者处理速度较慢时,以
避免生产者阻塞。
优点:
耦合度低,扩展性强
异步调用,无需等待,性能好
故障隔离,下游服务故障不影响上游业务
缓存消息,流量削峰填谷
缺点:
不能立即得到调用结果,时效性差
不能确定下游业务是否成功
业务安全依赖于Broker的可靠性
Broker:消息代理
像查询就不需要用到异步调用,因为查询必须是要等查出来才能进行下一步操作的
RabbitMQ也有自己的管理界面,可以也可以在管理界面直接进行交换机,队列的建立
RabbitMQ在java中整合
1.添加依赖
以下是整合RabbitMQ的依赖和一些基本依赖
SpringAMQP是RabbitMQ使用的主要依赖
SpringAMQP提供声明式的消息监听,我们只需要通过注解在方法上声明要监听的队列名称,将来
SpringAMQP就会把消息传递给当前方法
<!--AMQP依赖,包含RabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!--单元测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--Jackson-->