RabbitMq之应答模式

Posted 微微笑再加油

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
  ;

以上是关于RabbitMq之应答模式的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ 知识点总结

RabbitMQ基础总结

RabbitMQ基础总结

RabbitMQ基础总结

RabbitMQ基础总结

RabbitMQ---1消息确认Ack