RabbitMQ面试题整理

一、MQ的使用场景

先进先出:队列。

发布订阅:发布订阅消息主题。

持久化:存储核心数据,类似数据库。

分布式:支持大流量、大数据的使用场景,高性能中间件。

流量削峰:秒杀、抢购等场景。

日志处理:日志采集、实时监控、流处理管道。

消息通讯:微信消息、聊天室等。

二、RabbitMQ的工作流程

生产者:发送消息到交换机。

交换机:根据绑定的路由规则将消息路由到一个或多个队列

消费者:从队列中获取消息。

三、RabbitMQ如何防止消息丢失

持久化:将消息和队列标记为持久化。

四、RabbitMQ的消息模型有哪几种(交换机有哪几种)

1、hello world

一个生产者,一个消费者,一个队列。

生产者发送消息到队列,消费者调用。

2、work queue

一个生产者,多个消费者,一个队列。

生产者发送消息到队列,多个消费者都可以调用。

3、广播(fanout)

一个生产者,多个消费者,一个交换机,多个队列。

生产者发送消息到交换机,交换机将收到的消息广播到所有与之绑定的队列,所有消费者都能接收到消息。(广播通知)

4、路由

一个生产者,多个消费者,一个交换机,多个队列。

生产者发送消息到交换机,交换机将消息路由到一个或多个队列,消费者通过指定不同的路由接收消息。

5、Topics

和路由模式差不多,只不过可以在指定路由的时候配置通配符。

  • #:匹配一个或多个词
  • *:匹配不多不少恰好1个词

五、如何处理消息重复消费

  • 使用唯一标识符跟踪消息是否已处理。

六、如何实现延迟队列(如果通过MQ实现订单超时取消)

设置TTL(Time-To-Live)和死信交换机来处理超时消息

七、什么情况下消息会变成死信消息

  • 消息被拒绝且不重新入队(basic.rejectbasic.nack)。
  • 消息过期(TTL过期)。
  • 消息被丢弃(队列溢出)。

八、消息的签收模式有哪几种,有什么区别

  • 自动签收(消息送达后自动确认,不可回滚)。
  • 手动签收(消费者处理完消息后显式确认,用于确保消息已处理)。
  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值