计算机网站建设 是什么加强网站微信信息编辑队伍建设

张小明 2026/1/9 10:07:28
计算机网站建设 是什么,加强网站微信信息编辑队伍建设,保定哪家做网站好,网站制作 连云港视频看了几百小时还迷糊#xff1f;关注我#xff0c;几分钟让你秒懂#xff01;一、问题背景#xff1a;消息为什么会“丢”#xff1f;很多开发者以为 Kafka “天生可靠”#xff0c;但消息丢失往往发生在“消费端提交偏移量”的环节。 即使 Kafka 本身持久化了消息关注我几分钟让你秒懂一、问题背景消息为什么会“丢”很多开发者以为 Kafka “天生可靠”但消息丢失往往发生在“消费端提交偏移量”的环节。即使 Kafka 本身持久化了消息如果你的消费者提前提交了 offset而业务逻辑还没执行完一旦应用崩溃——这条消息就永远消失了。 典型场景用户下单成功Kafka 发送“订单创建”事件消费者收到消息准备扣库存offset 被提前提交扣库存前服务宕机 →订单已确认但库存没扣这不是 Kafka 的锅而是提交策略不当导致的二、根本原则先处理业务再提交 offset✅正确顺序1. 拉取消息 2. 执行业务逻辑如写 DB、调接口 3. 业务成功 → 提交 offset❌错误顺序自动提交默认行为1. 拉取消息 2. 后台线程定时提交 offset不管业务是否完成 3. 业务执行中崩溃 → 消息丢失三、解决方案关闭自动提交 手动 ACK 幂等消费下面我们用Spring Boot Kafka实现一个不丢消息的消费者。✅ 步骤 1关闭自动提交关键# application.yml spring: kafka: consumer: enable-auto-commit: false # 必须关闭 group-id: order-service key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-desserializer: org.springframework.kafka.support.serializer.JsonDeserializer properties: spring.json.trusted.packages: com.example.dto⚠️enable-auto-commit: false是防止消息丢失的第一道防线✅ 步骤 2配置手动 ACK 模式// KafkaConfig.java Configuration EnableKafka public class KafkaConfig { Bean public ConcurrentKafkaListenerContainerFactoryString, OrderEvent kafkaListenerContainerFactory( ConsumerFactoryString, OrderEvent consumerFactory) { ConcurrentKafkaListenerContainerFactoryString, OrderEvent factory new ConcurrentKafkaListenerContainerFactory(); factory.setConsumerFactory(consumerFactory); // 设置为手动立即确认 factory.getContainerProperties().setAckMode(ContainerProperties.AckMode.MANUAL_IMMEDIATE); return factory; } }✅ 步骤 3消费者代码业务成功才 ACK// OrderConsumer.java Component public class OrderConsumer { Autowired private InventoryService inventoryService; KafkaListener(topics order-created, groupId order-service) public void consume(OrderEvent event, Acknowledgment ack) { try { // 1. 业务处理扣减库存 inventoryService.decreaseStock(event.getProductId(), event.getQuantity()); // 2. 业务成功 → 手动提交 offset ack.acknowledge(); log.info(订单 {} 处理成功offset 已提交, event.getOrderId()); } catch (Exception e) { // 3. 业务失败 → 不提交 offset log.error(处理订单失败不提交 offset等待重试, e); // 可选记录到死信队列避免无限重试 } } }✅ 这样只有库存扣减成功offset 才会提交。如果失败下次重启还会重新消费同一条消息。四、进阶保障幂等性设计防重复消费由于我们采用“失败不提交 offset”消息可能会被重复消费。因此消费者必须幂等 幂等实现方式方式 1数据库唯一索引推荐CREATE TABLE processed_messages ( message_id VARCHAR(64) PRIMARY KEY, -- Kafka 消息的 key 或生成的 UUID processed_at TIMESTAMP );消费时if (!messageLogService.exists(event.getMessageId())) { // 执行业务 inventoryService.decreaseStock(...); // 记录已处理 messageLogService.save(event.getMessageId()); ack.acknowledge(); }方式 2业务状态机订单状态CREATED→STOCK_DEDUCTED如果已经是STOCK_DEDUCTED直接跳过五、反例对比自动提交 vs 手动提交场景自动提交enable-auto-committrue手动提交enable-auto-commitfalse消费消息后处理耗时 10 秒5 秒时自动提交 offset不提交直到ack.acknowledge()处理到第 8 秒时服务崩溃消息丢失offset 已提交消息保留offset 未提交重启后重试适合场景日志、监控等可容忍丢失的数据订单、支付、通知等关键业务六、其他注意事项1.不要在 ACK 后做关键操作// ❌ 危险ACK 后再操作崩溃会导致数据不一致 ack.acknowledge(); inventoryService.decreaseStock(...); // 崩溃 → offset 提交了但库存没扣✅ 正确顺序业务 → ACK2.避免长时间阻塞消费者线程如果业务耗时很长如调外部 API考虑异步处理 本地事务表或使用RetryableTopic 死信队列DLQ机制3.测试你的容错能力用kill -9模拟非优雅关闭观察消息是否重试、是否重复、是否丢失七、总结要防止 Kafka 消息在提交过程中丢失请牢记关闭自动提交enable-auto-commit: false业务成功后再手动 ACK消费者必须幂等防重复ACK 前不要做任何可能失败的关键操作这样即使服务崩溃、网络中断、机器宕机你的消息也不会丢失视频看了几百小时还迷糊关注我几分钟让你秒懂
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

手机网站 设计趋势龙游网站建设的公司

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个Navicat15快速原型模板,预置电商数据库常见表结构:用户表、商品表、订单表、支付表等。模板应包含:1.一键生成测试数据功能 2.基础ER图 …

张小明 2025/12/25 6:48:16 网站建设

钓鱼网站网址大全广州网站推广建设

5分钟快速上手:Farfalle Serper搜索API终极替代方案 【免费下载链接】farfalle 🔍 ai search engine - run local or cloud language models 项目地址: https://gitcode.com/GitHub_Trending/fa/farfalle 还在为Google搜索API的复杂配置和高昂费用…

张小明 2025/12/24 18:34:40 网站建设

毕业设计论文网站网站建设实验分析

声源定位模组小智机器人当智能设备需要精准捕捉声音方向,当小型化设计与高效能需求碰撞,德宇科创AR1105六向音源定位模组,以革新性技术方案给出完美答案。专注声学,传递美好,我们让每一台智能设备都拥有灵敏的“听觉定…

张小明 2025/12/25 0:48:56 网站建设

贵州企业网站建设公司如何制作简易个人网站

2024年的年前年后对于互联网人都不是一个太平的时间,互联网大厂的“裁员潮”愈演愈烈。京东裁员横跨多个板块,比例在 10-30%。有赞两轮裁员近七成,腾讯也不例外。虽已春暖花开,大厂却仍“寒冬正至”。 互联网行业迎来寒冬&#xf…

张小明 2026/1/2 16:01:32 网站建设

广州微信网站建设市场腾讯云wordpress对象储存

Lumerical FDTD复现不对称光栅不同级的衍射效率最近在研究Lumerical FDTD,想复现一下不对称光栅的衍射效率。说实话,一开始觉得这玩意儿挺简单的,不就是个光栅嘛,能有多复杂?结果一上手,发现坑还挺多。今天…

张小明 2025/12/24 11:42:53 网站建设

营销型手机网站太原it培训机构

D3.js标签防重叠终极方案:3大策略5步实战实现完美数据可视化 【免费下载链接】d3 Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada: 项目地址: https://gitcode.com/gh_mirrors/d3/d3 在数据可视化项目中&#x…

张小明 2026/1/1 18:01:55 网站建设