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

简介: 如何保证消息的幂等性 简述

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

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中查询一下,如果当前缓存中的数据已经消费过了,那就不用消费了,等等
目录
相关文章
|
19天前
|
网络安全 数据安全/隐私保护 网络虚拟化
|
3天前
|
消息中间件 IDE 数据库
RocketMQ事务消息学习及刨坑过程
RocketMQ事务消息学习及刨坑过程
|
19天前
|
网络安全 数据安全/隐私保护
神州数码DCWS学习日志
神州数码DCWS学习日志
|
1月前
|
SQL 监控 关系型数据库
【MySQL学习】MySQL的慢查询日志和错误日志
【MySQL学习】MySQL的慢查询日志和错误日志
|
1月前
|
消息中间件 存储 监控
写了10000字:全面学习RocketMQ中间件
以上是 V 哥在授课时整理的全部 RocketMQ 的内容,在学习时重点要理解其中的含义,正所谓知其然知其所以然,希望这篇文章可以帮助兄弟们搞清楚RocketMQ的来龙去脉,必竟这是一个非常常用的分布式应用的中间件,好了,今天的内容就分享到这,我靠!已经 00:36分,建议收藏起来,慢慢消化,创作不易,喜欢请点赞转发。
|
1月前
|
监控 Docker 容器
Docker从入门到精通:Docker log 命令学习
了解 Docker 日志管理对容器监控至关重要。`docker logs` 命令用于查看和管理容器日志,例如,`docker logs <container_name>` 显示容器日志,`-f` 或 `--follow` 实时跟踪日志,`--tail` 显示指定行数,`--timestamps` 添加时间戳,`--since` 按日期筛选。Docker 支持多种日志驱动,如 `syslog`,可通过 `--log-driver` 配置。有效管理日志能提升应用程序的稳定性和可维护性。
103 0
|
1月前
|
消息中间件 存储 负载均衡
消息队列学习之RabbitMQ
【4月更文挑战第3天】消息队列学习之RabbitMQ,一种基于erlang语言开发的流行的开源消息中间件。
26 0
|
1月前
|
消息中间件 存储 缓存
消息队列学习之rocketmq
【4月更文挑战第1天】消息队列学习之rocketmq
23 0
|
6天前
|
消息中间件 Java 双11
RocketMQ:揭秘电商巨头背后的消息队列秘密
**RocketMQ概览:**高性能分布式消息队列,适用于有序消息、事务处理、流计算、消息推送、日志处理及Binlog分发。在双11等高流量场景下证明了其性能、稳定性和低延迟。Java开发,利于扩展,性能超RabbitMQ,支持死信队列,但可能有集成兼容性问题。适合Java开发者,为电商等场景优化,每秒处理大量消息。
27 3
RocketMQ:揭秘电商巨头背后的消息队列秘密
|
13天前
|
消息中间件 监控 应用服务中间件
消息队列 MQ操作报错合集之重启Broker后,积压数出现为负数是什么导致的
在使用消息队列MQ时,可能会遇到各种报错情况。以下是一些常见的错误场景、可能的原因以及解决建议的汇总:1.连接错误、2.消息发送失败、3.消息消费报错、4.消息重试与死信处理、5.资源与权限问题、6.配置错误、7.系统资源限制、8.版本兼容性问题。
消息队列 MQ操作报错合集之重启Broker后,积压数出现为负数是什么导致的