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);};


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部