RocketMQ消费者实践

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

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

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

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

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

  • 如何快速消费

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

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

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

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

  • 消费失败如何处理

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

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

 

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

转载于:https://www.cnblogs.com/yangweiqiang/p/7218750.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值