消息消耗时间超过15分钟,可以在重试主题中生成两条相同的消息

消息消耗时间超过15分钟,可以在重试主题中生成两条相同的消息

当消息被消耗超过15分钟时 org.apache.rocketmq.client.impl.consumer.ProcessQueue#cleanExpiredMsg此方法扫描并找到,将此消息发送到重试主题并将其从缓存中删除。

但这条消息仍然是消费者的。最后,在org.apache.rocketmq.client.customer.listener.MessageListenerConcurrently#consumerMessage这个方法中,如果返回成功或失败,这个消息将被消耗多次。

原提问者GitHub用户panzhi33

展开
收起
芬奇福贵 2023-05-26 15:45:16 95 分享 版权
1 条回答
写回答
取消 提交回答
  • RocketMQ保证了消息一定投递且不丢失,但不保证消息不会重复。RocketMQ把解决消息重复的工作交给了用户。

    解决消息重复主要有两种方法:第一种方法是保证消费逻辑的幂等性(多次调用和一次调用相同);另一种方法是维护一个已经消费消息的记录,消费前查询这个消息是否被消费过。

    原回答者GitHub用户MountainOne

    2023-05-26 17:45:17
    赞同 展开评论
问答分类:
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

还有其他疑问?
咨询AI助理