RabbitMQ(基础)
1.1RabbitMQ的作用
- 异步任务
- 系统解耦
- 削峰
1.2为什么选择RabbitMQ
- 基于AMPQ协议(高级消息队列协议)
- 文档齐全,社区活跃
- 并发性能较高
- 相比其他中间件更容易维护
2.1RabbitMQ的七种运行模式
- 普通模式:简单的队列
- 竞争模式
- 消息确认,生产者要收到消费者返回的信息才确认推出的消息被消费,否则重新进入队列重新分配
- 公平派遣,生产者不指派1个以上的消息给同一个消费者
- 发布订阅(广播系统):生产者将消息发送到交换机,消费者生成队列绑定到交换机。使用fanout交换机
- 交换机推送:direct,根据路由key全匹配
如何保证rabbitMQ高可用性?
- 使用主备模式,使用haproxy对消息进行分发,如果主节点挂掉了它会自动将请求转发到备用节点上。
如何保证消息不被重复消费?
- 保证消息的唯一性,在生产的时候做唯一表示。判断这个表示是否已经消费过。
如何保证消息不被重复消费?
- 生产者丢失,开始rabbitMQ的事务模式和confirm模式。一旦信道进入confirm模式,他会生成一个唯一ID,一旦消息被投递到队列,队列会返回一个包含唯一ID的ACK确认消息已经到达队列,如果失败会返回一个Nack给生产者并且重试。
- 消息队列丢数据,开启队列持久化,当数据到达队列持久化成功以后返回一个ack给到生产者。生产者如果没有收到会重新发送到队列。
- 消费数据丢失,关闭自动确认消息。根据业务判断,是否已经消费过,手动进行确认。
如何保证RabbitMQ消息的顺序性?
答:单线程消费保证消息的顺序性;对消息进行编号,消费者处理消息是根据编号处理消息;
如何保证RabbitMQ消息的顺序性?
答:单线程消费保证消息的顺序性;对消息进行编号,消费者处理消息是根据编号处理消息;