springboot集成rabbitmq并手动注册容器实现单个queue的ack模式

本文介绍了两种在SpringBoot中集成RabbitMQ实现ACK模式的方法。第一种是通过配置文件,包括引入依赖、配置文件设置、MQConfig代码、生产者和消费者代码编写。第二种方法是通过手动注册SimpleMessageListenerContainer容器,实现单个queue的ACK模式。两种方法详细步骤和代码示例均有说明。
摘要由CSDN通过智能技术生成

rabbitmq的基础内容在之前已经介绍过,若有疑问,可参考我的之前的博文RabbitMQ基础介绍

接下来本篇博文中出现的代码,上篇rabbitmq基础博文中出现的四种exchange的类型以及死信队列的demo都可以在下方github地址中找到:github


进入正题,本文会介绍两种实现rabbitmq的ack模式的方法,分别为:

一、通过配置文件配置。

二、通过手动注册 SimpleMessageListenerContainer容器实现。

 

先介绍方法一:

通过配置文件配置。

此类实现起来较为方便,通过springboot的配置文件以及注解的形式即可完成。

1.首先引入依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2.编写配置文件

# rabbitmq基本配置
spring.rabbitmq.host=***
spring.rabbitmq.port=5672
spring.rabbitmq.username=***
spring.rabbitmq.password=***
spring.rabbitmq.virtual-host=/

# 开启发送确认
spring.rabbitmq.publisher-confirms=true
# 开启发送失败退回
spring.rabbitmq.publisher-returns=true
# 全局开启ACK
spring.rabbitmq.listener.simple.acknowledge-mode=manual

在配置文件中使用

spring.rabbitmq.listener.simple.acknowledge-mode

来配置ack模式,这个配置有三种配置方式,分别为NONE、MANUAL、AUTO。

I:NONE:默认为NONE,也就是自动ack模式,在消费者接受到消息后无需手动ack,消费者会自动将消息ack掉。

II:MANUAL:即为手动ack模式,消费者在接收到消息后需要手动ack消息,不然消息将一直处于uncheck状态,在应用下次启动的时候会再次对消息进行消费。使用该配置需要注意的是,配置开启后即项目全局开启手动ack模式,所有的消费者都需要在消费信息后手动ack消息,否则在重启应用的时候将会有大量的消息无法被消费掉而重复消费。

III:AUTO:自动确认ack 如果此时消费者抛出异常,不同的异常会有不同的处理方式。

3.编写MQConfig的代码,实现相应的queue和exchange的注册以及绑定。

    /**
     * ACK 测试
     */
    public static final String ACK_QUEUE_A = "ack.test.queue.A";
    public static final String ACK_QUEUE_B = "ack.test.queue.B";
    public static final String ACK_EXCHANGE = "ack.test.exchange";

    /**
     * ACK TEST
     */
    @Bean
    public Queue ackQueueA() {
        return new Queue(ACK_QUEUE_A);
    }

    @Bean
    public Queue ackQueueB() {
        return new Q
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值