RabbitMQ核心概念有哪些?
RabbitMQ有哪些使用场景或者你们业务都什么地方使用MQ,其实都是一类问题。
MQ常用场景:异步处理、应用解耦、流量削锋、消息通讯。
总体上项目引入RabbitMQ会带来下面三个方面的影响:系统可用性降低、系统复杂度提高、一致性问题。
RabbitMQ消息如何路由、消息如何投递跟交换机(exchange)类型有关,不同的交换机类型消息路由策略不一样。
RabbitMQ有几种工作模式?
RabbitMQ的消息顺序问题,需要分三个环节看待,发送消息的顺序、队列中消息的顺序、消费消息的顺序。
处理RabbitMQ重复消息的问题,就是处理消息的业务逻辑保持幂等性,只要保持幂等性,不管来多少条重复消息,最后处理的结果都一样。
RabbitMQ支持Confirm模式,确认消息有没有安全的投递给RabbitMQ。
消费者接收每一条消息后都必须进行确认(消息接收和消息确认是两个不同操作)。只有消费者确认了消息,RabbitMQ 才能安全地把消息从队列中删除。
RabbitMQ主要通过持久化机制,确保消息不丢,RabbitMQ持久化机制分为队列持久化、消息持久化、交换器持久化。
RabbitMQ延迟队列就是存储延迟消息的队列,延迟消息指的就是消息投递到队列后,消费者不能立刻消费,需要等待一段时间,消费者才能消费消息。
DLX,全称为 Dead-Letter-Exchange,死信交换机,死信邮箱。当消息在一个队列中变成死信 (dead message) 之后,它能被重新被发送到另一个交换机中,这个交换机就是 DLX,绑定 DLX 的队列就称之为死信队列。
优先级队列,顾名思义,优先级高的消息具备优先被消费的特权。
如何解决RabbitMQ消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?数百万消息持续积压几个小时,说说怎么解决?