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

宁波网站建设制作方法个人做网站要注意什么

宁波网站建设制作方法,个人做网站要注意什么,有名的网页游戏,wordpress天气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/591228.html

相关文章:

  • 宿州网站制作自己做的简单网站下载
  • 用服务器做网站21天网站建设实录pdf
  • 网络营销推广公司网站有哪些本人已履行网站备案信息
  • pc 手机网站小说网站开发设计
  • 网站设计怎么做超链接手机app设计软件
  • wordpress搬家全站 404安卓网页制作软件
  • jsp网站开发四 酷 全书源码外链工具xg
  • 整站seo优化公司网页设计与制作前景如何
  • 妇联加强网站平台建设wordpress某个页面全屏显示
  • 如何做网站窗口做淘客网站用什么上传文件
  • 网站分站原理安卓手机app应用开发
  • 怎样做国外电子商务网站kesion系统做网站教程
  • 专业做营销网站建设wordpress 视频代码
  • 织梦网站后台管理教程达内培训网站开发
  • 网站搜索引擎优化方案的案例想学设计没有基础怎么办
  • dedecms 营销网站模板免费下载网上怎样正规赚钱
  • 福州住房和建设局网站在线制作图片加文字免费软件
  • 创口贴网站模板软件行业发展趋势
  • dw做的网站放文件夹品牌设计公司收费标准
  • 松江建设网站数字营销的4个特征
  • 中国旅游网站建设进销存免费管理软件
  • 杭州论坛网站制作wordpress提示没有权限
  • 济南建站公司网站网站的发布与推广怎么写
  • 临清网站制作公司机械营销网站建设案例
  • 做网站单页学建网站 必须学那些知识
  • 网站遮罩是什么怎样打开网站
  • 哈尔滨网络科技公司哪家好网站基础优化
  • 人工智能在线ai写作网站做电商到底如何赚钱
  • 做预算兼职的网站想要网站推广页面
  • asp.net做网站有何意义网站文字变白色代码怎么做