栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

RabbitMQ ACK 机制的意义

RabbitMQ ACK 机制的意义

ack 机制可以用来告诉 mq 你的消费者程序已经完成这个消息的处理了。


“个人觉得一般处理消息出错都是因为代码逻辑或者出bug,即使 队列中后来仍然保留该消息,然后再给某一个消费者消费,不还是报错吗?”

这个可以在创建 queue 的时候,设置dead letter 相关属性。

 channel.basicQos(1);

    QueueingConsumer consumer = new QueueingConsumer(channel);
    channel.basicConsume(TASK_QUEUE_NAME, false, consumer);

    while (true) {
      QueueingConsumer.Delivery delivery = consumer.nextDelivery();
      String message = new String(delivery.getBody(), "UTF-8");

      System.out.println(" [x] Received '" + message + "'");
      try{
          doWork(message);
          System.out.println(" [x] Done");

          channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
      }catch(Exception e){
          channel.basicReject(delivery.getEnvelope().getDeliveryTag(), false);
          System.out.println("出现异常, reject,不重新入队");
      }


出现异常的时候,reject,且不重新入队,即可进入死信队列

 有帮到你的点赞、收藏一下吧

                                                                       需要更多教程,微信扫码即可

                                                                                 

                                                                                         

                                                        别忘了扫码领资料哦【高清Java学习路线图】

                                                                     和【全套学习视频及配套资料】
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/629881.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号