MQ消息队列幂等性和顺序性-创新互联

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

一个数据或者一个请求,重复操作多次,得确保对应的数据是不会改变的。一条数据重复出现两次,数据库里就只有一条数据,这就保证了系统的幂等性。

创新互联公司长期为成百上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为邢台县企业提供专业的网站设计制作、成都做网站邢台县网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。

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

向数据库写库,先根据主键查一下,如果这数据已经有了,就别插入了,update一下。如果是写Redis,那没问题了,反正每次都是set,天然幂等性。

稍微复杂一点,比如生产者发送每条数据的时候,里面加一个全局唯一的id,类似订单id之类的东西,然后消费到了之后,先根据这个id去比Redis里查一下,之前消费过吗?如果没有消费过,就处理,然后这个id写Redis。如果消费过了,那就别处理了,保证别重复处理相同的消息即可。

比如基于数据库的唯一键来保证重复数据不会重复插入多条。因为有唯一键约束了,重复数据插入只会报错,不会导致数据库中出现脏数据。Kafka有个offset的概念,就是每个消息写进去,都有一个offset,代表消息的序号,然后 consumer 消费了数据之后,每隔一段时间(定时定期),会把自己消费过的消息的 offset提交一下,表示“我已经消费过了,下次要是重启什么的,就从上次消费到的 offset来继续消费”。

有这么个场景。数据 1/2/3 依次进入 Kafka,Kafka 会给这三条数据每条分配一个 offset,
代表这条数据的序号,我们就假设分配的 offset 依次是 152/153/154。消费者从 Kafka 
去消费的时候,也是按照这个顺序去消费。假

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

分享题目:MQ消息队列幂等性和顺序性-创新互联
分享网址:https://www.cdcxhl.com/article38/cecepp.html

成都网站建设公司_创新互联,为您提供做网站品牌网站设计虚拟主机外贸网站建设关键词优化响应式网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

绵阳服务器托管