RabbitMQ系列--消费者的消息确认机制

本文介绍了RabbitMQ消费者消息确认的三种机制:自动确认、根据情况确认和手动确认。自动确认模式下,消费者不会确认消息是否成功处理。根据情况确认时,特定异常会导致消息被拒绝或重新入队列。手动确认模式需要调用Basic.Ack、Basic.Nack或Basic.Reject方法。文中还展示了手动确认模式下异常处理和多队列消息处理的示例。
摘要由CSDN通过智能技术生成
RabbitMQ消费者消息确认的三种机制:
  1. 自动确认(AcknowledgeMode.NONE)
  • RabbitMQ消费者默认为自动确认,不会管消费者是否成功消费/处理了消息
  1. 根据情况确认(AcknowledgeMode.AUTO)
  • 如果消息成功被消费(成功的意思是在消费的过程中没有抛出异常),则自动确认
  • 当抛出 AmqpRejectAndDontRequeueException 异常的时候,则消息会被拒绝,且 requeue = false(不重新入队列)
  • 当抛出 ImmediateAcknowledgeAmqpException 异常,则消费者会被确认
  • 其他的异常,则消息会被拒绝,且 requeue = true(如果此时只有一个消费者监听该队列,则有发生死循环的风险,多消费端也会造成资源的极大浪费,这个在开发过程中一定要避免的)。可以通过 setDefaultRequeueRejected(默认是true)去设置
  1. 手动确认(AcknowledgeMode.MANUAL)
  • 消费者收到消息后,手动对消息进行处理,完成消费
  • Basic.Ack :用于确认当前消息
  • Basic.Nack :用于否定当前消息
  • Basic.Reject :用于拒绝当前消息
消息接收配置类

记得先把之前的监听类都注释掉

package com.chentawen.rabbitmqconsumer.config;

import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.annotation.Resource;

/**
 * 消息接收配置类
 * @author admin
 */
@Configuration
public class MessageListenerConfig {

    /**
     * RabbitTemplate 连接工厂
     */
    @Resource
    private CachingConnectionFactory connectionFactory;

    /**
     * 消息接收处理类
     */
    @Resource
    private MyAckReceiver myAckReceiver;
 
    @Bean
    public SimpleMessageListenerContainer simpleMessageListenerContainer() {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory);
        // 消费者数量,默认10
        container.setConcurr
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撸码社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值