当前位置: 首页 > 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/525721.html

相关文章:

  • Why is it called “callback function“
  • axios响应发生错误时的情况列表
  • 网站备案 接口360网页游戏大厅官网
  • vue导出数据到excel
  • 网站续费一年多少钱西安旅游网站建设
  • 探码科技再获“专精特新”认定:Baklib引领AI内容管理新方向
  • 郑州大型网站建设价格百度广告联盟app
  • 简述网站开发具体流程巫山集团网站建设
  • 【Diffusion Model】发展历程
  • 作用域 变量提升(Hoisting)的代码输出题
  • 商城网站建设最好的公司免费网站打包app
  • 网站没有关键词自己做的网站如何上首页
  • 【Matlab】异常处理:MException
  • 郑州友网站建设四川省建设监理协会网站
  • 本地部署Docsify生成文档网站并实现公网环境远程访问
  • 有做a50期货的网站服务周到的微网站建设
  • Linux:开源时代的隐形基石
  • 毕业设计做企业门户网站搭建网页的基础语言
  • 破解本地生活 “到店-复购“ 断层!我店+微团双模式,核销率提升90%
  • 仿qq商城版淘宝客网站源码模板+带程序后台文章dede织梦企业程序网站做担保交易平台
  • Rust中的智能指针
  • 网站建设论文提纲论坛门户网站开发
  • 有哪些单页网站网站建设代码走查
  • 四线城市做网站建设怎么样网页设计与制作全过程
  • Telegram tdlib客户端Java本地编译打包
  • 上海做网站的公司是什么桂林象鼻山景区介绍
  • 阿里云渠道商:OSS与传统存储系统的差异在哪里?
  • Redis事务和Lua脚本对比
  • 广州微信网站建设报价表宝塔建站系统
  • Git 日常