开发者社区 问答 正文

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

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

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