2016 - 2024

感恩一路有你

mq避免消息重复消费 JAVA面试如何保证消息不被重复消费?如何保证消息消费的幂等性?

浏览量:1395 时间:2021-03-13 07:20:27 作者:admin

JAVA面试如何保证消息不被重复消费?如何保证消息消费的幂等性?

我是闲着没事干,来这里玩的,开始在各个网络找技术资料,后就以《头条》为主了。由找资料转向了交朋友了。因为我想的东西落后了时代,有些的想的,由于自己程度不高。在脑子里只是勾思,达不到实际!!!

高并发场景下,如何保证生产者投递到消息中间件的消息不丢失?

消息中间件消息不丢失主要从以下几个方面考虑

投递

生产者向消息中间件投递消息是push的方式,这种方法会出现以下情况

1、生产者挂掉了

情况是这样的,你的生产者收到了数据,并存到了数据库中,同时生产者要降消息push到消息中间件做异步处理。这时候如果生产者挂掉了,就导致消息数据没有push到消息中间件里,也就会出现数据不一致的问题。

这时候我们可以在数据库设置是否投递成功标志位,在生产者push之后,再将标志位设置为已经投递。另外,客气启动一个定时任务,检测是否有消息没有投递,保证消息数据一定会进入中间件。

2、消息重试

生产者没有挂掉,但是因为网络等其他问题,导致生产者不知道有没有投递成功。这时候生产者可以失败重试,这保证消息可以再次投递。但是这有可能会出现重复投递,导致出现中间件消息数据重复。

存储

消息中间件是存到磁盘上的,存入磁盘的消息一般是不会丢失的,同时磁盘文件还会做备份。如果一个丢失了,可以通过备份文件恢复。

消费

一般消费者需要在消费者消费成功之后再设置提交消费位点。如果消费失败,消费者不提交消费位点还是可以消费该数据的。这就引出一个问题就是消息重复消费。这个问题和上边提到的消息重复投递相同,都会导致重复消费,这就需要考虑消费的幂等性,可以做消费记录,防止重复消费。

为什么使用mq?

谢谢邀请回答:

抱歉,不太领会问答题的真正含义,无法答辩。谅解!

精通spring全家桶,被15家公司拒绝,大专程序员出路在哪?

看你的情况,说明你对自己还是比较自信,认为自己却掌握了比较全方位的技术,但是在面试过程中你屡屡碰壁,连续被多家单位和企业拒绝,抛开他们是否有眼光不说,这其中肯定有你自己的问题。建议你在以下几个方面,查找自己面试过程中的不足。

1.是否把你的能力真正的展示出来了。

作为技术员而言,学历是一个方面,可以作为一个参考,但并不是最重要,最重要的是有实打实的技术。企业需要的是能够解决问题的技术员,而不是需要学历高的技术员,这一点是很肯定的,所以你不必过于在意自己学历不高的问题。如果是要需要学历撑门面的话,本科研究生或许都什么用,至少也要找一个专家来撑门面。所以,很有可能是在你在面试的过程中,你并没有把自己的能力真正的完全的展示出来。

2.是否有自己的代表作品。

企业在面试的过程中,通常都会与应聘者进行沟通,但是这些沟通都比较宏观,也是一种感性的认识。你在面试的过程中,除了你介绍自己的技术全面之外,如果你能够拿出自己具有代表性的作品,那么可以增强你的说服力,大大增加自己应试的筹码。

3.是否对自己的工作经历进行了系统梳理。

企业招聘人员的时候,要在短时间认识和了解一个人,本身这是一项难度很高的事情,所以给每个应聘者的时间并不是很多。那么,你在面试之前,要对自己的工作经历,取得的业绩或成果,对未来的发展设想,进行系统全面的梳理,以便于更高效的与相关的招聘人员进行沟通。不能以为自己是理工科类别,干的是技术活,就不需要梳理和总结。

祝你能早日找到满意的工作。

如何设计一个MQ消息队列?

1.先上图,明确一个消息发送和消费的流程

2.消息消息首先需要定义消息协议,比如ActiveMQ,Stomp,XMPP等

3.消息协议定义好了,明确消息队列需要满足什么场景

是否需要保证消息可靠性,如果需要就要做存储的高可用

是否需要支持同步和异步消息

是否需要保证消息的顺序

是否需要支持延时消息

具体可以参照很多开源实现的特性,比如RocketMQ就是高可靠的,Kafka就是高吞吐量的,但是不是高可靠的。


mq避免消息重复消费 mq消息堆积怎么解决 mq如何保证消息顺序

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。