• RocketMQ消费者实践


      最近工作中用到了RocketMQ,现记录下,如何正确实现消费~

    • 消费者需要注意的问题
    1. 防止重复消费
    2. 如何快速消费
    3. 消费失败如何处理
    • Consumer具体实现
    • 防止重复消费

        重复消费会造成数据不一致等问题。所以,消费者要做到消费幂等

        1)每次消费,记录messageId;如果再次消费该message,查询messageId是否已存在,已存在,就跳过消费;

        2)使用具体业务状态来防止重复消费,例如如果状态已经被变更,说明已有消息被消费;

    • 如何快速消费

        消费过程缓慢,势必会造成消息积压,如何提高消费速度势必比较重要:

        每次接收到消息后,不做处理(具体不一定,最好是简单),直接将消息保存到本地数据库,然后后台异步处理消息,这么做的好处:

        1) 快速消费,如果消费过程比较耗时(大量更新,RPC调用等),可以将消息插入本地,然后后台异步消费,消费完成,更新本地消息状态

                   2)失败可控,如果某条消息消费失败,不依赖于mq的重试机制,可以定时重跑消费失败的消息,或者人工触发重试消费。

    • 消费失败如何处理

       消费过程不能保证不出异常,虽然mq消费失败有重试机制,但我们并没有这么做,而是:

        跟上面提到的一样,由于已经把消息存到了本地,消费失败,也不用担心,后台重跑即可~~~~

      如果大家觉得上面说的哪方面有问题,或者有更好的实践,欢迎留言~~~~

  • 相关阅读:
    php多态
    ssl certificate problem: self signed certificate in certificate chain
    test plugin
    open specific port on ubuntu
    junit vs testng
    jersey rest service
    toast master
    use curl to test java webservice
    update folder access
    elk
  • 原文地址:https://www.cnblogs.com/yangweiqiang/p/7218750.html
Copyright © 2020-2023  润新知