什么是rabbitMQ?
rabbitMQ采用AMQP高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦
为什么要使用rabbitMQ?
- 在分布式系统下具备异步处理、流量削峰、负载均衡、解耦服务等一系列高级功能
- 拥有持久化的机制,进程消息,队列中的信息也可以保存下来
- 实现消费者和生产者之间的解耦
- 对于高并发场景下,利用消息队列可以使得同步访问变成串行访问达到一定量的限流,利于数据库的操作
- 可以使用消息队列达到异步下单的效果(排队中),后台进行逻辑下单
使用rabbitMQ的场景
服务间异步通信、顺序消费、定时任务、请求削峰如何确保消息正确发送到RabbitMQ?如何确保消息被接收方接收?
发送确认模式将信道设置成confirm模式(发送方确认模式), 则所有在信道上发布的消息都会被指派一个唯一ID 一旦消息被投递到目的队列,或消息被写入磁盘(可持久化的消息) 信道会发送一个确认给生产者(包含消息唯一ID)
接收方确认机制
消费者接收每一条消息后必须确认(消息接收和消息确认是两个不同的操作) 只有消费者确认了消息,RabbitMQ才会安全地把消息从队列中删除