RabbitMQ 作用
你好! 你知道RabbitMQ是什么吗,是干什么用的呢,就让我们来学习一下吧。
1.什么是RabbitMQ
RabbitMQ采用了AMQP高级信息消息队列协议的一种消息对列技术,特点就是消费并不需要确保提供方的存在,大大的实现了对服务之间的高度解耦
2.为什么要用RabbitMQ
1.在分布式系统下具备异步,削峰,负载均衡等一系列的功能。
2.拥有持久化的机制,进程信息,队列中的信息也可以保存下来。
3.实现消费者和生产者之间的解耦。
4.可以使用消息队列达到异步下单的效果,排队中,后台进行逻辑下单。
3.使用场景
1. 服务见异步通信
2. 顺序消费
3. 定时任务
4. 请求削峰
4.如何确保消息正确地发送至RabbitMQ? 如何确保消息接收方消费了消息
发送方:
将信道设置成confirm模式(发送方确认模式),则所有在信道上发布的消息都会被指派一个唯一的ID。
一旦消息被投递到目的队列后,或者消息被写入磁盘后(可持久化的消息),信道会发送一个确认给生产者(包含消息唯一ID)。
如果RabbitMQ发生内部错误从而导致消息丢失,会发送一条nack(not acknowledged,未确认)消息。
发送方确认模式是异步的,生产者应用程序在等待确认的同时,可以继续发送消息。当确认消息到达生产者应用程序,生产者应用程序的回调方法就会被触发来处理确认消息。
接受方:
接收方消息确认机制:消费者接收每一条消息后都必须进行确认(消息接收和消息确认是两个不同操作)。只有消费者确认了消息,RabbitMQ才能安全地把消息从队列中删除。
这里并没有用到超时机制,RabbitMQ仅通过Consumer的连接中断来确认是否需要重新发送消息。也就是说,只要连接不中断,RabbitMQ给了Consumer足够长的时间来处理消息。保证数据的最终一致性;
下面罗列几种特