首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

RabbitMQ生产者Confirm消息(三)

RabbitMQ的特性是保障数据的一致性,稳定性和可靠性。但是如何来保障这些了?这就有了很多的保障机制。在前面的文章体系中也是介绍到RabbitMQ中的生产者负责把消息发送到Exchange,并不需要关心Queue是什么,那么问题就出现了,如果生产者发送的MQ消息消费者没有收到了?这如何可以做到前面说的数据的一致性以及可靠性了。我们可以结合现实的例子来看这部分,比如我向别人借了100元,然后我要了对方的银行卡号,把钱还给了对方,但是我给对方没有说,那么其实对方是不知道的,所以在对方的心理我始终还是欠他100元的,其实这样的案例在我实际的生活就出现过,当然是很多年前的事了,总是这过程确认反馈的机制。技术也是需要符合人性的,那么RabbitMQ为了做到数据的一致性的保障,在生产者端就有Confirm的确认机制。

01

RabbitMQ重回队列机制(六)

在RabbitMQ的生产端把消息发送到Exchange后,然后Exchange与Queue来建立映射关系从而保障消费端能够接收到消息,保障在业务端的消息可靠性,这是正常情况的一种逻辑思维。在异常的情况下,消息到队列中消费端并不能够收到消息,那么就需要重试的机制,也就是重回队列的机制。其实重试的机制在服务端的业务保障性体系中是必须需要考虑的,因为总有特殊的情况导致发送的请求在请求方并没有收到请求,比如服务这层出现TimeOut,以及连接数出现瓶颈,那么这个时候整体程序的瓶颈是在服务这层,那么既然涉及到重试的机制,一般重试是几次了?另外需要思考的是重试的间隔是需要多少秒之间?其实重试的间隔以及重试的次数就需要和具体技术的负责人根据业务的形态来进行考虑,这中间也是需要考虑到幂等性的问题。但是作为服务端质量体系保障的一个部分,质量负责人以及对应测试这部分的同学必须得有这个技术底蕴和测试场景的意识,需要更加系统宏观的站在全局的角度来考虑服务这层重试以及不重试给产品带来的风险管控。当然,在本文章体系中重点核心探讨的是RabbitMQ的重回队列的机制应用。

02

RabbitMQ优先级队列机制(八)

在服务级级别的测试中需要考虑被执行任务的优先级机制,也就是通过线程优先级来进行,设置优先级的目的是在资源非常紧张的情况下,让优先级高的任务优先执行,而优先级低的任务排后执行,当然这样的一种设置机制只能是异步的模式下执行,如果是设计在同步的模式下执行,那这个设计从系统上来说就缺少宏观维度的思考。在RabbitMQ的机制中也是提供了队列的优先级机制,这样设计的目的也是在在生产者生产过快,而消费者消费不过来的情况下,也就是资源在紧张或者说是在有限的情况下,设置的队列优先级高的任务它的消息优先进行消费,而优先级低的消息排后消费。当然,如果是在资源不紧张的情况下,设置优先级其实没多大的意义,因为这个时候优先过来的消息先进行消费,也谈不上排队的机制和优先级的机制。

02
领券