MQ 学习日志(五) 如何保证消息的幂等性

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 如何保证消息的幂等性 简述

如何保证消息不被重复消费(消息消费的幂等性)

KafKa消息消费的流程

image-20230507114430375.png

生产者发送消息到topic中,Partition将消息存储的时候,会给当前消息维护一个Offset标号,用来标记该消息在该partition中的位置(顺序),当消费者消费完这条消息之后,会将该消息的offset发送给zookeeper,broker会通过zookeeper随时获取消息消费的信息

kafka消费者组使用的消费模式是pull(拉)消费模式,消息消费的流程由消费者主动向生产者获取,他可以简化broker的设计,consumer可以自主控制消费消息的速率,同时consumer可以自己控制消费方式,积可批量消费也可逐条消费,同时还能选择不同的提交方式,从而实现不同的传输语义,但是pull模式不足之处就是,如果kafka没有数据,消费者可能会陷入循环中,一致等待数据到达,为了避免这种情况我,我们再我们的拉请求中有参数,允许消费者请求再等待数据到达的“长轮训”钟进行阻塞(并且可选的等待到给定的字节数,以确保大的传输大小)

kafka的消费者不是消费完一条数据就立马提交offset的,而是定时定期提交一次offset

如何保证消息队列消息消费的幂等性

这个需要根据业务场景来进行判断

  1. 数据要进行操作之前,根据当前数据的全局唯一id去redis中查询一下,如果当前缓存中的数据已经消费过了,那就不用消费了,等等
目录
相关文章
|
3月前
|
消息中间件 存储 数据库
深入学习RocketMQ的底层存储设计原理
文章深入探讨了RocketMQ的底层存储设计原理,分析了其如何通过将数据和索引映射到内存、异步刷新磁盘以及消息内容的混合存储来实现高性能的读写操作,从而保证了RocketMQ作为一款低延迟消息队列的读写性能。
|
1月前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
43 3
|
1月前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
24 3
|
1月前
|
数据采集 监控 Java
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
本文是关于SpringBoot日志的详细教程,涵盖日志的定义、用途、SLF4J框架的使用、日志级别、持久化、文件分割及格式配置等内容。
127 0
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
|
2月前
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
1月前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
30 0
|
3月前
|
Java 数据库连接 数据库
后端框架的学习----mybatis框架(6、日志)
这篇文章介绍了如何在MyBatis框架中使用日志功能,包括配置MyBatis的日志实现、使用log4j作为日志工具,以及如何通过配置文件控制日志级别和输出格式。
|
3月前
|
消息中间件 Java 调度
"解锁RabbitMQ云版:揭秘电商巨头、日志大师、任务狂人的秘密武器,你的系统升级就差这一步!"
【8月更文挑战第14天】在分布式与微服务架构中,RabbitMQ云版本作为消息队列服务,助力系统间解耦与异步通信。通过三个场景展示其实用性:1) 订单处理系统中,利用RabbitMQ实现跨服务流程的解耦;2) 日志收集与分析,异步发送日志至中央系统,保障业务流畅;3) 任务调度,处理耗时任务避免阻塞主线程。这些应用充分展现了RabbitMQ云版本的强大功能和灵活性。
34 0
|
23天前
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
63 5
|
18天前
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。