开发者社区> 问答> 正文

RabbitMQ如何在消费者获取任务后未处理完前就挂掉时,保证数据不丢失?

RabbitMQ如何在消费者获取任务后未处理完前就挂掉时,保证数据不丢失?

展开
收起
珍宝珠 2019-11-22 13:42:07 2293 0
1 条回答
写回答
取消 提交回答
  • 为了预防消息丢失,rabbitmq提供了ack
    即工作进程在收到消息并处理后,发送ack给rabbitmq,告知rabbitmq这时候可以把该消息从队列中删除了。
    如果工作进程挂掉 了,rabbitmq没有收到ack,那么会把该消息 重新分发给其他工作进程。
    不需要设置timeout,即使该任务需要很长时间也可以处理。
    
    ack默认是开启的,工作进程显示指定了no_ack=True
    
    2019-11-22 13:42:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
RocketMQ Client-GO 介绍 立即下载
RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
阿里云栖开发者沙龙PHP技术专场-RabbitMQ 的延时队列和镜像队列原理与实战-钱文品 立即下载