RabbitMQ的TTL全称为Time-To-Live,表示的是消息的有效期。消息如果在队列中一直没有被消费并且存在时间超过了TTL,消息就会变成了"死信" (Dead Message),后续无法再被消费了。设置TTL有两种方式:第一种是声明队列的时候,在队列的属性中设置,这样该队列中的消息都会有相
原创 2021-12-07 09:54:09
335阅读
​1.背景在面试过程中,该题目是毕不可少的必答题。博主在这里经过多方面整理,总结了下文。如果有面试需求,可以适当的背背。2.消息投递的过程先来说明一个概念,什么是可靠投递呢?
原创 2022-01-16 16:16:16
389阅读
1.mq原则 数据不能多,也不能少,不能多是说消息不能重复消费;不能少,就是说不能丢失数据。如果mq传递的是非常核心的消息,支撑核心的业务,那么这种场景是一定不能丢失数据的。 2.丢失数据场景 丢数据一般分为三种,一种是mq把消息丢了,一种就是消费时将消息丢了。下面从rabbitmq和kafka分别
转载 2020-06-04 21:08:00
300阅读
2评论
消息持久化,当然前提是队列必须持久化RabbitMQ确保持久性消息能从服务器重启中恢复的方式是,将它们写入磁盘上的一个持久化日志文件,当发布一条持久性消息到持久交换器上时,RabbitMQ会在消息提交到日志文件后才发送响应。一旦消费者从持久队列中消费了一条持久化消息RabbitMQ会在持久化日志中把这条消息标记为等待垃圾收集。如果持久化消息在被消费之前RabbitMQ重启,那么RabbitMQ
原创 2022-11-14 19:50:36
190阅读
RabbitMQ一般情况很少丢失,但是不能排除意外,为了保证我们自己系统高可用,我们必须作出更好完善措施,保证系统的稳定性。 下面来介绍下,如何保证消息的绝对丢失的问题,下面分享的绝对干货,都是在知名互联网产品的产线中使用。 1.消息持久化 2.ACK确认机制 3.设置集群镜像模式 4.消息补偿机
转载 2020-02-05 10:21:00
300阅读
2评论
正在学RabbitMQ,特此记录一下,这里就不讲RabbitMQ基础了,直接进入主题。文章目录 生产端可靠性投递 事务消息机制 confirm消息确认机制 消息持久化 消息入库 消费端消息丢失 我们都知道,消
转载 2022-05-25 08:53:24
1241阅读
消息一旦发送到MQ后,会返回一个结果给发送者,表示消息是否处理成功。一般配合重试机制使用,在消费者出现异常时利用本地重试,达到一定次数后,如果消息依然失败,将消息投递到异常交换机,交由人工处理了。消费者确认机制,消费者处理消息后可以向MQ发送ack回执,MQ收到ack回执后才会删除该消息,SpringAMQP支持3中模式。消息持久化,MQ默认是保存在内存当中的,开启持久化功能可以确保缓存在MQ中的消息丢失RabbitMQ-如何保证消息丢失
一、数据丢失的三个场景 一条消息从生产者发送到消费者消费的过程: 可以看出,一条消息整个过程要经历两次的网络传输: 从生产者发送到RabbitMQ服务器,从RabbitMQ服务器发送到消费者 在消费者未消费前存储在队列(Queue)中 所以可以知道,有三个场景下是会发生消息丢失的: 生产者发送消息到 ...
转载 2021-10-06 21:21:00
277阅读
2评论
一、数据丢失的三个场景 一条消息从生产者发送到消费者消费的过程: 可以看出,一条消息整个过程要经历两次的网络传输: 从生产者发送到RabbitMQ服务器,从RabbitMQ服务器发送到消费者 在消费者未消费前存储在队列(Queue)中 所以可以知道,有三个场景下是会发生消息丢失的: 生产者发送消息到 ...
转载 2021-10-06 21:21:00
871阅读
2评论
前言面试经常会被问到“怎么避免RabbitMQ消息丢失”。首先需要明确的是,RabbitMQ在默认情况并不会保证消息丢失。不过RabbitMQ提供了一些机制,可以有效的避免消息在传输和处理过程中丢失。可能导致消息丢失的环节先通过RabbitMQ的架构模型看一下消息的处理过程:发布者和RabbitMQ建立连接发送消息至交换机。交换机和队列绑定,将消息路由到队列中。消费者和RabbitMQ建立
转载 2024-08-12 11:45:42
38阅读
1.本篇概要要解决该问题,就要用到RabbitMQ中持久化的概念,所谓持久化,就是RabbitMQ会将内存中的数据(Exchange交换器,Queue队列,Message消息)固化到磁盘,以防异常情况发生时,数据丢失。其中,RabblitMQ的持久化分为三个部分:交换器(Exchange)的持久化队列(Queue)的持久化消息(Message)的持久化2.交换器(Exchange)的持久化在上篇博
原创 2019-06-04 13:40:49
818阅读
RabbitMq为例,消息从生产到消费,要经历三个阶段,分别是生
原创 2022-10-21 17:25:40
1867阅读
RabbitMQ-保证消息丢失的机制、避免消息的重复消费
一、消息为什么丢失 RabbitMQ默认情况下的交换机和队列以及消息是非持久化的,也就是说在服务器重启或者宕机恢复后,之前创建的交换机和队列都将不复存在,之前未消费的消息也就消失不见了。原因在于每个队列和交换机的durable属性。该属性默认情况是false,
转载 2018-09-11 13:49:00
110阅读
2评论
2023-07-08:RabbitMQ如何做到消息丢失?答案2023-07-08:1.持久化发送消息时设置delivery_mode属性为2,使消息被持久化保存到磁盘,即使RabbitMQ服务器宕机也能保证消息丢失。同时,创建队列时设置durable属性为True,以确保队列也被持久化保存。2.确认机制消费者通过basic.ack命令向RabbitMQ服务器确认已经消费了消息。如果消费者处理消
原创 2023-07-08 21:30:20
2393阅读
1点赞
RabbitMQ支持发布者确认机制,即发布者在将消息发送到队列后,等待RabbitMQ服务器的确认消息RabbitMQ支持备份队列(Alternat
消息队列防止消息丢失1、 生产者发送消息到broker失败;生产者使用事务消息。2、 Broker集群主从同步失败;两阶段提交,多数节点成功后提交。3、 MQ异步刷盘,可能会消息丢失;改为同步刷盘。4、 Broker发送消息到消费者失败;消费者ack机制。5、 MQ集群挂掉了,生产者无法发送消息到MQ;消息临时存储在redis、文件或数据库中。    事务
浅谈 RabbitMQ(一)工作模型与 Exchange 类型 一、消息传递分析 RabbitMQ的具体结构图参考笔者上一篇文章,下面画个消息传递的简图 从上图可知,要确保一个消息正确的传递,需要在四个传递阶段都能正确传递: 确保消息成功由生产者发送到RabbitMQ服务器 确保消息被交换机路由到正 ...
转载 2021-08-16 13:40:00
96阅读
2评论
Kafka保证消息丢失kafka保证消息丢失,需要从三个方面考虑:生产者端消息
原创 2023-05-11 10:26:15
972阅读
  • 1
  • 2
  • 3
  • 4
  • 5