美文网首页面试
Mq,如何防止消息重复

Mq,如何防止消息重复

作者: 萝灏 | 来源:发表于2018-12-02 14:21 被阅读0次

解决方式:消费端自己处理

造成消息的重复的根本原因是:网络不可达。只要通过网络交换数据,就无法避免这个问题。所以解决这个问题的办法就是不解决,转而绕过这个问题。那么问题就变成了:如果消费端收到两条一样的消息,应该怎样处理?

  • 1、消费端处理消息的业务逻辑保持幂等性
  • 2、保证每条消息都有唯一编号且保证消息处理成功与去重表的日志同时出现

第1条很好理解,只要保持幂等性,不管来多少条重复消息,最后处理的结果都一样。第2条原理就是利用一张日志表来记录已经处理成功的消息的ID,如果新到的消息ID已经在日志表中,那么就不再处理这条消息。我们可以看到第1条的解决方式,很明显应该在消费端实现,不属于消息系统要实现的功能。第2条可以消息系统实现,也可以业务端实现。正常情况下出现重复消息的概率不一定大,且由消息系统实现的话,肯定会对消息系统的吞吐量和高可用有影响,所以最好还是由业务端自己处理消息重复的问题,这也是MQ不解决消息重复的问题的原因。MQ不保证消息不重复,如果你的业务需要保证严格的不重复消息,需要你自己在业务端去重。

相关文章

  • Mq,如何防止消息重复

    解决方式:消费端自己处理 造成消息的重复的根本原因是:网络不可达。只要通过网络交换数据,就无法避免这个问题。所以解...

  • 防止mq重复消费

    1. 利用全局唯一id 消息里放入全局唯一id,做完业务后查询id是否存在表里,不存在则将唯一id插入数据库单独...

  • RabbitMQ【三】如何保证消息不丢失

    关于MQ的几件小事(四)如何保证消息不丢失 1.mq原则 数据不能多,也不能少,不能多是说消息不能重复消费,这个我...

  • mq防止消息丢失方案

    今晚,与老大交流了一下线程池接受出票异步反馈,老大告诉我,线程池耗内存而且当并发线程多了会造成堵塞,丢失关键数据...

  • 如何在MQ中实现支持任意延迟的消息?

    如何在MQ中实现支持任意延迟的消息? 什么是定时消息和延迟消息? 定时消息:Producer 将消息发送到 MQ ...

  • kafka防止消息重复消费

    kafka重复消费的根本原因就是“数据消费了,但是offset没更新”!而我们要探究一般什么情况下会导致offse...

  • 第三章-高级特性1:Confirm

    消息如何保证100%的投递成功 保障消息的成功发出 保障MQ节点的成功接收 发送端收到MQ节点(Broker) 确...

  • 聊聊MQ,如何避免消息丢失?如何避免重复消费?

    前言 我在工作中,使用到消息中间件MQ的业务还是挺多的,我从事在一家交通行业的公司,业务中经常会涉及处理一些违法数...

  • 消息队列

    MQ的作用 消息通信MQ的基础功能即为消息通信。使用MQ的客户端可以将消息发送到MQ中,也可以从MQ中消费消息。 ...

  • MQ性能

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

网友评论

    本文标题:Mq,如何防止消息重复

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