美文网首页
MQ问题处理

MQ问题处理

作者: Franck_ | 来源:发表于2020-11-17 10:23 被阅读0次

目前我采用的是RoketMq , 因为是分布式的。
功能强大,很多功能都有。
自带后台管理。
Java开发。
还支持事务消息(用于分布式事务的可靠消息最终一致性方案)。

和Kafuka的对比,不是Java开发。不支持事务。

重复消费怎么办?

保证消费的幂等性, 主要是根据业来处理。
往redis里面写一条这个消息的记录,每次消费之前,判断一下,是否之前已经消费过了。 或者根据业务实际查库。

消息丢了怎么办,怎么不丢消息?

生产者丢消息:
发送消息后,会得到一个发送消息的结果, 如果整个发送消息没有报异常,则说明发送成功。
可以设置发送失败重试的参数:

// 同步发送消息重试次数,默认为 2
mqProducer.setRetryTimesWhenSendFailed(3);
// 异步发送消息重试次数,默认为 2
mqProducer.setRetryTimesWhenSendAsyncFailed(3);

MQ丢消息:
调整broker接受消息,写入内存后,一定要写入硬盘才返回写入成功,即配置消息为同步操作:

## 默认为 ASYNC_MASTER 
brokerRole=SYNC_MASTER

部署主从集群,默认是异步的主从复制,调整参数为同步复制,即从broker写入成功后,才返回写入成功:

## master 节点配置
flushDiskType = SYNC_FLUSH
brokerRole=SYNC_MASTER

## slave 节点配置
brokerRole=slave
flushDiskType = SYNC_FLUSH

消费者丢消息:
处理完,发送一条确认消息给MQ。 是这个思想。
消费者消费完成以后, 需要返回一个消息给broker 。 就是监听消费者的方法里面的return。
必须是执行成功消费的逻辑后才返回 成功的消息: ConsumeConcurrentlyStatus.CONSUME_SUCCESS。
否则,则返回 稍后再次消费的信息。 ConsumeConcurrentlyStatus.RECONSUME_LATER。

如果由于网络原因,没有返回消息给broker的话, 那么这个消息超时后,将会被重新消费。

怎么保证信息的顺序性?

将需要保持顺序的消息,发送到1个队列里面去。 这样消费者就可以按照顺序消费。

根据业务可以使用Java的内存队列。 甚至可以用Redis的队列。

消息积压怎么处理?

紧急扩容。 增加消费者, 进行队列积压监控。

如果之前的消费者出BUG ,或者实在处理太慢; 可以另外写一些消费者,再大量部署。 原先的消费者不只是入库,而且是将消息消费完成后,将结果发送给新的消费者集群, 让新的消费者集群去大量快速消费。

核心思想是,快速将MQ里面积压的消息,尽快处理掉。

相关文章

  • MQ问题处理

    目前我采用的是RoketMq , 因为是分布式的。功能强大,很多功能都有。自带后台管理。Java开发。还支持事务消...

  • 那些年开发中遇到的坑:mq重试

    那些年在开发中遇到的坑 今日遇到一个分布式服务重复消费mq的问题!猜测是阿里云MQ的一个处理逻辑、当业务处理超时时...

  • 20:系统概念理解:什么是MQ,MQ的好处,以及什么是业务系统

    什么是MQ? MQ口语中就是指消息,书面语指处理消息发布订阅的处理器,例如kafka。 MQ的基本构成:TOPIC...

  • MQ性能

    MQ消息积压如何处理 优化性能避免消息积压 MQ本身的处理能力是远大于业务系统的处理能力的、主流消息队列的单个节点...

  • ActiveMQ 使用小结

    Active MQ Active MQ 支持两类消息处理方式,分别为 Topic 方式: Queue 方式: To...

  • RabbitMQ原理及相关操作

    MQ使用场景 MQ的使用场景大概包括解耦,提高峰值处理能力,送达和排序保证,缓冲等。 MQ概述 消息队列技术是分布...

  • [即时通讯] - 重构之路

    问题: 生产环境,用户快速增长,后台服务暴露各种问题:服务器资源紧张,消息队列满MQ 卡死,服务处理不过来,数据库...

  • MQ问题汇总

    2035 MQRC_NOT_AUTHORIZED 当使用MQ7.1或7.5时,如果使用MQ管理员账号去连接MQ服务...

  • MQ问题总结

    一、为什么使用 MQ? 1.1 解耦 1.1.1 解耦1 例如电商系统核心是交易服务,交易服务要调用另外三个服务,...

  • rokectMq 消息发送超长的问题

    最近公司项目使用了 Apache rokectMq 进行消息发送,本人也是第一次接触mq。 领导说要处理下mq消息...

网友评论

      本文标题:MQ问题处理

      本文链接:https://www.haomeiwen.com/subject/qxgbbktx.html