90%的Java程序员,都扛不住这波消息中间件的面试四连炮!
配置耐久化有两个步调:
可是这样一来也许会有人说:万一动静发送到RabbitMQ之后,还没来得及耐久化到磁盘就挂掉了,数据也丢失了,怎么办? 对付这个题目,着实是共同上面的confirm机制一路来担保的,就是在动静耐久化到磁盘之后才会给出产者发送ack动静。 万一真的碰着了那种极度的环境,出产者是可以感知到的,此时出产者可以通过重试发送动静给此外RabbitMQ节点 斲丧端弄丢了数据 RabbitMQ斲丧端弄丢了数据的环境是这样的:在斲丧动静的时辰,刚拿到动静,功效历程挂了,这个时辰RabbitMQ就会以为你已经斲丧乐成了,这条数据就丢了。 对付这个题目,要先声名一下RabbitMQ斲丧动静的机制:在斲丧者收到动静的时辰,会发送一个ack给RabbitMQ,汇报RabbitMQ这条动静被斲丧到了,这样RabbitMQ就会把动静删除。 可是默认环境下这个发送ack的操纵是自动提交的,也就是说斲丧者一收到这个动静就会自动返回ack给RabbitMQ,以是会呈现丢动静的题目。 以是针对这个题目的办理方案就是:封锁RabbitMQ斲丧者的自动提交ack,在斲丧者处理赏罚完这条动静之后再手动提交ack。 这样纵然碰着了上面的环境,RabbitMQ也不会把这条动静删除,会在你措施重启之后,从头下发这条动静过来。 怎么担保MQ的高可用性性? 行使了MQ之后,我们必定是但愿MQ有高可用特征,由于不行能接管呆板宕机了,就无法收动员静的环境。 这一块我们也是基于RabbitMQ这种经典的MQ来声名一下: RabbitMQ是较量有代表性的,由于是基于主从做高可用性的,我们就以他为例子讲授第一种MQ的高可用性怎么实现。 rabbitmq有三种模式:单机模式,平凡集群模式,镜像集群模式 单机模式 单机模式就是demo级此外,就是说只有一台呆板陈设了一个RabbitMQ措施。 这个会存在单点题目,宕机就玩完了,没什么高可用性可言。一样平常就是你当地启动了玩玩儿的,没人出产用单机模式。 平凡集群模式 这个模式的意思就是在多台呆板上启动多个rabbitmq实例。相同的master-slave模式一样。 可是建设的queue,只会放在一个master rabbtimq实例上,其他实例都同步谁人吸取动静的RabbitMQ元数据。 在斲丧动静的时辰,假如你毗连到的RabbitMQ实例不是存放Queue数据的实例,这个时辰RabbitMQ就会从存放Queue数据的实例上拉去数据,然后返回给客户端。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |