当前位置:   article > 正文

RabbitMq之应答模式_rabbitmq自动应答

rabbitmq自动应答

RabbitMq应答模式两种:
1.自动应答: 不在乎消费者对消息处理是否成功,都会告诉队列删除消息。如果处理消息失败,实现自动补偿(队列投递过去 重新处理)。
2.手动应答: 消费者处理完业务逻辑,手动返回ack(通知)告诉队列处理完了,队列进而删除消息
而手动应答有如下三个方法

方法作用
Channel.basicAck用于肯定确认
Channel.basicNack用于否定确认
Channel.basicReject用于否定确认(不处理该消息了直接拒绝,可以将其丢弃了)

注意:手动应答时还有一个参数:Multiple 是否批量处理,一般选择false ,不批量处理。
批量处理图解如下
在这里插入图片描述
手动应答开启如下

//消息的接收手动应答
boolean autoAck = false;
channel.basicConsume(TASK_QUEUE_NAME,autoAck,deliverCallback,cancelCallback);

//确认接收消息的回调
DeliverCallback deliverCallback = (consumerTag, message) ->{
      System.out.println("接收到的消息"+new String(message.getBody()));
      /**
       * 手动应答
       * 1.消息的标记 tag
       * 2.是否批量应答
       */
      channel.basicAck(message.getEnvelope().getDeliveryTag(),false);
  };
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/412155?site
推荐阅读
相关标签
  

闽ICP备14008679号