-
生产者消息丢失场景:
- -生产者消息丢失,写消息的过程中,消息没到rabbitmq在网络传输过程中就丢失;或者是消息到了rabbitmq,但是mq内部出错,目前没有保存消息.
-
生产者消息丢失解决方案:
- 1.通过事务机制
Connection conn = factory.newConnection(); Channel channel = conn.createChannel(); channel.txSelect; try{ //发送消息 }catch(Exception e){ channel.txRollback; //再次尝试发送该条消息 } channel.txCommit; channel.close(); conn.close(); //缺点,是同步操作,生产者发送消息会同步阻塞,等待成功失败,导致吞吐量下降
- 2.使用confirm模式(异步确认方式);1.把channel设置为confirm模式;2.发送消息;3.发送消息之后无需任何操作;4.rabbitmq接受到消息就回调本地的接口,通知信息收到;5.如果rabbitmq信息接受失败也会回调本地的一个接口,通知消息接收失败,此时你可以选择再次发送该条消息.
-
RabbitMQ消息丢失场景:
- -rabbitmq接受到消息,缓存到内存中,还没被消费,此时rabbitmq挂了,存到内存中的数据丢失.
-
RabbitMQ消息丢失解决方案:
- -第一步:设置创建queue设置为持久化(只会持久化queue元数据,但不会持久化queue中的数据);
- 第二部:发送消息时,设置deliveryMode设置为2(此时queue中的数据也将被持久化);
- 第三步:配合confirm机制使用,当消息被持久化后才通知生产者ack;
-
消费者丢失数据场景:
- -消费者接收到消息,但是还没操作,消费者自己挂了,但是rabbitmq以为该条消息已经被消费.
-
消费者丢失数据解决方案:
- -将autoAck关闭,在处理完消息后再手动提交ack;
RabbitMQ消息丢失
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1.简述RabbitMQ中的几种Exchange的作用。 答:有四种exchange 1)direct excha...
- (1)RabbitMQ的高可用性 RabbitMQ是比较有代表性的,因为是基于主从做高可用性的,我们就以他为例子讲...