一、作用
- 应用解耦:提高系统容错性和可维护性
- 异步提速:提升用户体验和系统吞吐量
- 削峰填谷:提高系统稳定性
二、RabbitMQ的工作模式
1.简单模式
2.work queues
3.Publish/Subscribe 发布与订阅模式(Fanout exchange,需要绑定)
4.Routing 路由模式(Direct Exchange,需要路由key)
5.Topics 主题模式(使用通配符)
6.RPC 远程调用模式(远程调用,不算MQ)
其实3、4、5这三种都属于订阅模型
举例-简单模式
1、生产者
2、消费者
三、消息确认机制(ACK)
当消费者获取消息后,会向RabbitMQ发送回执ACK,告知消息已经被接收。有两种类型:
- 自动ACK:消息一旦被接收,消费者自动发送ACK
- 手动ACK:消息接收后,不会发送ACK,需要手动调用
需要用到哪种,根据消息的重要性来看:
- 如果消息不太重要,丢失也没关系的话就用自动ACK(自动确认可能出现程序抛异常,消息仍被消费)
- 如果消息非常重要,不容丢失,使用手动ACK
四、集成springBoot