mq避免重复消费

https://blog.csdn.net/yeweiouyang/article/details/74943278

发送到死信队列中的消息需要取出来进行消费,转发到原有队列重新消费

一是在客户端做幂等性处理

二是消息有唯一编号,消费完的消息,存到消息表里,这样做去重。

第二种对消息系统的吞吐量有巨大的需求,能用客户端去解决的话,最好用客户端的幂等性

    
    如何保证消息不被重复消费?
    默认情况下就不会被重复消费,ack消息确认机制
    activemq会重试,重试6次
    1.你要保证调用方是幂等的。幂等:多次调用和一次调用结果一致(查询,更新
    2.程序不是幂等的,需要手动做一些操作:
        1)维护一个map,在map中对消息进行记录,有内存泄露的风险
        2)维护一张表(mysql,redis):消息消费表
            好处:即使你的 mq不可用,我也可以把源源不断发送过来的消息记录下来,等你的mq上线了,持续消费
            来自于硬件的信息,接口文档中明确说明,接收信息后不能有太长的处理时间(解析,分类,存入数据库)
            接收一条消息,立马发送到activemq进行后续处理
            消息表记录每条消息的内容,消费状态
        3)消息重试6次依然失败,会进入死信队列,等服务正常之后消费死信队列中的消息
举例:例子哪里来呢?
    生产环境中会遇到的bug,异常情况

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十步杀一人_千里不留行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值