RabbitMQ面试知识
什么是RabbitMQ
异步操作的消息队列

RabbitMQ的组件
virtual host:虚拟主机。每个虚拟主机就是一个RabbitMQ服务器,多个虚拟主机之间互相不干扰。
exchange: 交换机。接收消息并将消息发送到对应的队列中。
queue:队列,储存消息,特点是先进先出。
publisher:消息的生产者。
Message:由消息头和消息体组成。消息体是不透明的,而消息头则由一系列的可选属性组成,这些属性包括routing-key、priority、delivery-mode(是否持久性存储)等
Broker:消息队列服务器实体
什么时候使用mq
对于一些不需要立刻执行的操作,采用异步的消息队列去实现。

mq的优点
缺点:在性能上的吞吐量不如卡夫卡
优点:1.支持数据的持久化 2.有管理界面,方便管理和使用 3.有消息确认机制,多种消息分发机制
mq的重要接收
1.发送者 2.接收者 3.代理--mq本身
Exchange 类型
交换机有4种
1.fanout:将信息发送到与之绑定的队列中
2.direct:在1的基础上同时添加了key
3.topic:模糊匹配
4.headers:Exchange不依赖于routing key与binding key的匹配规则来路由消息,而是根据发送的消息内容中的header属性进行匹配。
消息丢失
由于网络波动或者一些特殊的原因导致了消息的丢失
解决:
1.生产者确认机制
事务机制。在一条消息发送之后会使发送端阻塞,等待RabbitMQ的回应,之后才能继续发送下一条消息。性能差。
开启生产者确认机制,只要消息成功发送到交换机之后,RabbitMQ就会发送一个ack给生产者(即使消息没有Queue接收,也会发送ack)。如果消息没有成功发送到交换机,就会发送一条nack消息,提示发送失败。
配置:

2.路由不可达消息

3.备份交换机

4.消费者手动消息确认


5.持久化

6.镜像队列

消息重复消费如何处理
生产:携带全局id。消费:当全局进入到生成和消费者时候加入到redis,用于判断是否被消费过。

消费端怎么进行限流?

什么是死性队列

怎么设置消息的过期时间?


浙公网安备 33010602011771号