当前位置: 首页 > wzjs >正文

网站建设加盟找索引擎seo

网站建设加盟,找索引擎seo,网站做多少外链,天津网站建设公司RabbitMQ 全面详解(附面试重点) 一、RabbitMQ 与其他消息队列对比 特性RabbitMQKafkaRocketMQActiveMQ设计定位企业级消息中间件(传统业务场景)高吞吐分布式流处理平台(日志、大数据)金融级高可靠消息中间…

RabbitMQ 全面详解(附面试重点)


一、RabbitMQ 与其他消息队列对比
特性RabbitMQKafkaRocketMQActiveMQ
设计定位企业级消息中间件(传统业务场景)高吞吐分布式流处理平台(日志、大数据)金融级高可靠消息中间件轻量级 JMS 实现(传统企业集成)
协议支持AMQP、STOMP、MQTT自定义协议(基于 TCP)自定义协议、JMSAMQP、STOMP、OpenWire
吞吐量中等(万级 QPS)极高(百万级 QPS)高(十万级 QPS)低(万级 QPS)
消息顺序队列级别顺序分区级别顺序队列级别顺序队列级别顺序
消息持久化支持(磁盘持久化)支持(分段日志存储)支持支持
事务支持支持不支持(但支持幂等)支持支持
典型场景订单处理、支付回调日志采集、实时流处理金融交易、事务消息企业级系统集成

类比解释

  • RabbitMQ 像“快递公司”:保证每个包裹(消息)准确送达,适合对可靠性要求高的场景。
  • Kafka 像“高速公路”:允许大量车辆(数据)高速通过,适合日志流和大数据管道。
  • RocketMQ 像“银行运钞车”:强调安全与事务,适合金融等高敏感场景。

二、RabbitMQ 核心架构与底层原理
1. 核心组件
组件作用类比
Producer消息生产者,发送消息到 Exchange快递员(发送包裹)
Exchange接收消息并根据规则路由到队列(类似邮局分拣中心)邮局分拣员
Queue存储消息的缓冲区,等待 Consumer 消费快递仓库
Binding定义 Exchange 和 Queue 的绑定规则(路由键匹配)快递配送路线表
Consumer消息消费者,从队列获取消息处理收件人
Channel复用 TCP 连接的虚拟通道(轻量级,避免频繁创建连接)高速公路上的多条车道
2. AMQP 协议工作原理
  1. 生产者发布消息 → Exchange
  2. Exchange 路由消息 → 根据类型和 Binding 规则投递到 Queue
  3. 消费者订阅 Queue → 通过 Channel 拉取或推送消息
  4. 消息确认(ACK) → 确保消息可靠消费

底层原理

  • Erlang 语言:基于 Erlang 的 OTP 框架,天生支持高并发和分布式。
  • 消息持久化:通过磁盘存储(消息和队列均可持久化)防止数据丢失。
  • 预取机制(Prefetch):控制消费者每次获取的消息数量,避免过载。

三、Exchange 类型详解
类型路由规则场景示例代码示例
Direct精确匹配 Routing Key订单状态更新(按订单ID路由)channel.exchangeDeclare("order", "direct")
Topic通配符匹配(* 匹配一个词,# 匹配多个词)日志分类(如 logs.error.*channel.exchangeDeclare("logs", "topic")
Fanout广播到所有绑定队列系统通知(全员广播)channel.exchangeDeclare("alerts", "fanout")
Headers匹配消息头(键值对)复杂条件路由(如设备类型过滤)channel.exchangeDeclare("devices", "headers")

类比

  • Direct:快递员按详细地址(Routing Key)送货。
  • Topic:按地区关键词(如“上海.浦东.*”)批量配送。
  • Fanout:小区广播通知,每家每户都能收到。
  • Headers:根据包裹上的标签(Headers)选择配送方式。

四、Spring Cloud 集成 RabbitMQ
1. 添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2. 配置连接参数(application.yml)
spring:rabbitmq:host: localhostport: 5672username: guestpassword: guestvirtual-host: /
3. 创建交换机、队列与绑定
@Configuration
public class RabbitConfig {// 创建直连交换机@Beanpublic DirectExchange orderExchange() {return new DirectExchange("order.exchange");}// 创建队列@Beanpublic Queue orderQueue() {return new Queue("order.queue", true); // 持久化队列}// 绑定交换机与队列@Beanpublic Binding orderBinding() {return BindingBuilder.bind(orderQueue()).to(orderExchange()).with("order.routingKey");}
}
4. 发送消息
@Service
public class OrderService {@Autowiredprivate RabbitTemplate rabbitTemplate;public void sendOrderMessage(String orderId) {rabbitTemplate.convertAndSend("order.exchange", "order.routingKey", "订单创建: " + orderId);}
}
5. 消费消息
@Component
public class OrderListener {@RabbitListener(queues = "order.queue")public void processOrder(String message) {System.out.println("收到订单消息: " + message);}
}

五、面试高频问题与答案
问题 1:如何保证消息不丢失?
  • 答案
    1. 生产者确认:启用 publisher confirms 机制。
    2. 消息持久化:设置 deliveryMode=2(持久化消息)。
    3. 消费者手动 ACK:消费成功后手动确认(AcknowledgeMode.MANUAL)。
问题 2:如何避免重复消费?
  • 答案
    1. 幂等性设计:业务逻辑天然幂等(如更新操作)。
    2. 唯一标识:记录消息 ID,消费前检查是否已处理。
    3. Redis 去重:用 SETNX 命令记录已消费消息。
问题 3:如何实现延迟队列?
  • 答案
    1. 死信队列(DLX):消息 TTL 过期后转发到 DLX。
    2. 插件实现:使用 RabbitMQ 官方 rabbitmq_delayed_message_exchange 插件。

六、高级特性与最佳实践
1. 集群与高可用
  • 镜像队列:通过 ha-mode=all 实现队列镜像复制。
  • 负载均衡:使用 HAProxy 或 Nginx 做负载均衡。
2. 消息确认机制
  • 自动 ACK:消息发送后立即删除(风险高)。
  • 手动 ACK:业务处理成功后手动确认(推荐)。
3. 流量控制
  • QoS 预取:设置 spring.rabbitmq.listener.simple.prefetch=10 控制并发。

总结

RabbitMQ 作为企业级消息中间件,核心优势在于 灵活的路由规则高可靠性。面试中需重点掌握:

  1. Exchange 类型与路由机制
  2. 消息可靠性保障手段(持久化、ACK)。
  3. Spring Boot 集成方式(配置、发送与监听)。
  4. 集群与高可用方案(镜像队列、负载均衡)。

实战口诀

  • 交换机是路由,绑定是规则。
  • 队列是仓库,消费要确认。
  • 持久化防丢,幂等防重复。
http://www.dtcms.com/wzjs/30693.html

相关文章:

  • 谁给个网站啊急急急2021百度手机提高关键词排名
  • 企业网站功能描述网站关键词有哪些
  • 昆明网站建设哪家比较好色盲能治好吗
  • 西安住房建设局网站今日头条十大新闻
  • 专做药材的网站有哪些品牌营销案例
  • 咸阳企业网站设计开发制作福州seo优化
  • 遵义市做网站的电话seo新手教程
  • 北京高端建网站优化公司哪家效果好
  • 网站建设与维护的论述题seo网站优化工具大全
  • 做多语言网站多少钱网络推广方案怎么写
  • 个人如何制作网站源码软文是什么东西
  • 做网站 珠海seo平台是什么意思
  • 北京市政建设集团有限责任公司网站电商的运营模式有几种
  • 靠网站点击就能赚钱的做公众号软文推广
  • 免费1级做爰片免费网站站优云网络公司
  • 创意网站模板下载静态网页设计与制作
  • 中国建行网站首页引流客户的最快方法是什么
  • 故事网站模版投诉百度最有效的电话
  • 泾川县门户网站留言网络营销招聘
  • 建设网站好处百度搜索引擎盘搜搜
  • 安徽合肥网站建设西安楼市最新房价
  • 杭州正规的网站建设公司济南网站优化公司哪家好
  • 工信部网站备案批准文件营销网络
  • 做外贸没有网站需要注意什么附近电脑培训班零基础
  • 做购物网站表结构分析网站代运营推广
  • 博山做网站百度统计app下载
  • 启凡科技企业网站建设苏州关键词搜索排名
  • 南通做网站推广的公司seo营销技巧培训班
  • 南阳那里有做网站的saas建站平台
  • 电子商务网站开发与建设试卷百度收录网址提交