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

权重的网站建设网站有哪些内容

权重的网站,建设网站有哪些内容,北京冬奥会网站制作素材,网站关键词设定目录一、消息确认的双子星策略1.1 自动确认模式(自动挡)1.2 手动确认模式(手动挡)二、死信队列实战:订单超时歼灭战2.1 配置死信战场2.2 处理战损订单三、集群搭建:构建消息堡垒3.1 容器化集群部署&#xf…

目录

    • 一、消息确认的双子星策略
      • 1.1 自动确认模式(自动挡)
      • 1.2 手动确认模式(手动挡)
    • 二、死信队列实战:订单超时歼灭战
      • 2.1 配置死信战场
      • 2.2 处理战损订单
    • 三、集群搭建:构建消息堡垒
      • 3.1 容器化集群部署(Docker版)
      • 3.2 镜像队列配置(高可用核心)
      • 3.3 集群架构图
    • 四、军火库对比
      • 4.1 确认模式选型指南
      • 4.2 集群模式对照表
    • 五、实战经验弹夹
      • 5.1 预取数量调优
      • 5.2 通道复用秘籍
    • 六、未来战场:RabbitMQ 4.0新特性
      • 6.1 量子流加速器(Quorum Queues)
      • 6.2 跨云同步武器

“消息队列就像城市的下水道系统:消息确认是防漏检测,死信队列是应急处理,集群架构则是多重备用管道”

一、消息确认的双子星策略

1.1 自动确认模式(自动挡)

public class AutoAckConsumer {private static final String QUEUE = "payment-notify";@RabbitListener(queues = QUEUE, ackMode = "AUTO")public void handlePaymentNotify(String message) {try {PaymentNotify notify = JsonUtil.fromJson(message, PaymentNotify.class);processPayment(notify); // 业务处理} catch (Exception e) {// 异常消息会被自动丢弃!log.error("处理支付通知失败", e);}}
}

1.2 手动确认模式(手动挡)

public class ManualAckConsumer {private static final String QUEUE = "order-process";@RabbitListener(queues = QUEUE, ackMode = "MANUAL")public void handleOrder(Message message, Channel channel) throws IOException {Order order = parseMessage(message);try {inventoryService.deductStock(order);  // 扣减库存channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);log.info("订单{}处理成功", order.getId());} catch (Exception e) {channel.basicNack(message.getDeliveryTag(), false, true); // 重试log.warn("订单{}处理失败,已放回队列", order.getId());}}
}
自动ACK
手动ACK/NACK
消息生产者
订单队列
自动确认消费者
手动确认消费者

二、死信队列实战:订单超时歼灭战

2.1 配置死信战场

@Configuration
public class DeadLetterConfig {// 主战场队列@Beanpublic Queue orderQueue() {Map<String, Object> args = new HashMap<>();args.put("x-dead-letter-exchange", "order.dead.exchange");args.put("x-dead-letter-routing-key", "order.dead");args.put("x-message-ttl", 600000); // 10分钟超时return new Queue("order.create", true, false, false, args);}// 死信收容所@Beanpublic DirectExchange deadExchange() {return new DirectExchange("order.dead.exchange");}@Beanpublic Queue deadLetterQueue() {return new Queue("order.dead.letter");}@Beanpublic Binding deadBinding() {return BindingBuilder.bind(deadLetterQueue()).to(deadExchange()).with("order.dead");}
}

2.2 处理战损订单

public class OrderTimeoutProcessor {@RabbitListener(queues = "order.dead.letter")public void handleExpiredOrder(Order order) {if (orderService.checkPaymentStatus(order.getId())) {log.info("订单{}已完成支付,自动关闭", order.getId());} else {orderService.cancelOrder(order.getId());notifyService.sendTimeoutAlert(order.getUserId()); // 发送提醒log.warn("订单{}超时未支付,已取消", order.getId());}}
}
订单服务订单队列死信交换器死信队列死信处理服务创建订单(TTL=10m)10分钟到期转发死信路由到死信队列消费处理订单服务订单队列死信交换器死信队列死信处理服务

三、集群搭建:构建消息堡垒

3.1 容器化集群部署(Docker版)

# 启动三个节点
docker run -d --hostname node1 --name rabbit1 -p 5672:5672 rabbitmq:management
docker run -d --hostname node2 --name rabbit2 -p 5673:5672 --link rabbit1:node1 rabbitmq:management
docker run -d --hostname node3 --name rabbit3 -p 5674:5672 --link rabbit1:node1 --link rabbit2:node2 rabbitmq:management# 组建集群
docker exec rabbit2 rabbitmqctl stop_app
docker exec rabbit2 rabbitmqctl join_cluster rabbit@node1
docker exec rabbit2 rabbitmqctl start_appdocker exec rabbit3 rabbitmqctl stop_app
docker exec rabbit3 rabbitmqctl join_cluster --ram rabbit@node1
docker exec rabbit3 rabbitmqctl start_app

3.2 镜像队列配置(高可用核心)

@Bean
public Queue haOrderQueue() {Map<String, Object> args = new HashMap<>();args.put("x-ha-policy", "all"); // 镜像到所有节点return new Queue("ha.order.queue", true, false, false, args);
}

3.3 集群架构图

数据同步
数据同步
客户端
HAProxy负载均衡
节点1
节点2
节点3

四、军火库对比

4.1 确认模式选型指南

维度自动确认手动确认
可靠性⭐⭐⭐⭐⭐
吞吐量⭐⭐⭐⭐⭐⭐⭐⭐
消息安全可能丢失可靠保障
适用场景日志收集交易类业务
开发复杂度简单需要异常处理

4.2 集群模式对照表

模式普通集群镜像队列
数据分布元数据共享队列全复制
故障恢复需要手动迁移自动故障转移
网络要求低延迟高带宽
性能影响写入性能下降30%
适用场景非关键业务金融级业务

五、实战经验弹夹

5.1 预取数量调优

@Bean
public SimpleRabbitListenerContainerFactory containerFactory() {SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();factory.setPrefetchCount(50); // 根据业务调整factory.setConcurrentConsumers(5);return factory;
}

5.2 通道复用秘籍

public class ChannelKeeper {private final ConcurrentMap<String, Channel> channelPool = new ConcurrentHashMap<>();public Channel getChannel(String connectionKey) throws IOException {return channelPool.computeIfAbsent(connectionKey, k -> {Connection conn = connectionFactory.newConnection();return conn.createChannel();});}
}

警告:channel不是线程安全的!每个线程请使用独立channel

六、未来战场:RabbitMQ 4.0新特性

6.1 量子流加速器(Quorum Queues)

# 启用新队列类型
rabbitmqctl set_policy quorum "^quorum\." '{"queue-mode":"quorum"}' --apply-to queues

6.2 跨云同步武器

@Bean
public Queue federatedQueue() {Map<String, Object> args = new HashMap<>();args.put("x-federation-upstream", "aws-cloud");return new Queue("cross.cloud.queue", true, false, false, args);
}
http://www.dtcms.com/a/419118.html

相关文章:

  • vxe-grid @edit-closed方法不被执行或者叫不触发
  • CF Yamakasi (前缀和+双指针)
  • 机器学习-第三章 线性模型
  • 新手想做网站赚钱app制作开发公司怎么收费
  • 现代Web存储技术(二):存储容量规划与传统方案对比
  • PyTorch实战(8)——图像描述生成
  • App Store 上架完整流程解析,iOS 应用发布步骤、ipa 文件上传工具、TestFlight 测试与苹果审核经验
  • stm32和Zynq的中断抢占机制
  • iOS App 混淆实战,在源码不可用情况下的成品加固与测试流程
  • Python爬虫技术:招标信息抓取与关键词过滤 (1)
  • 莞城网站推广wordpress图片并列排
  • 塘厦仿做网站wordpress和jwplayer
  • 嵌入式 - 内核驱动3 - class/device | misc | ioctl |device/driver
  • Matlab通过GUI实现点云的双边(Bilateral)滤波(附最简版)
  • 4-5〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸远程文件包含漏洞
  • 怎么在淘宝上做网站中交建设集团网站
  • 在线查看网站源码中国最新新闻
  • 轴状态读取(运动控制系列)
  • quic的拥塞控制
  • 【模型系列】Human-in-the-Loop
  • AI项目问题总结大全
  • 【linux内核驱动day03】
  • Accelerate基本使用
  • Day75 基本情报技术者 单词表10 ネットワーク応用
  • 企业网站美化做常州美食网站首页的背景图
  • 网站建设设计的流程wordpress的搭建教程 pdf
  • 页网站腾讯云学生机做网站
  • C++ 模板(Template)基础与应用
  • Flask实战指南:从基础到高阶的完整开发流程
  • I2C总线详解