rabbitmq 手动提交_第四章----SpringBoot+RabbitMQ发送确认和消费手动确认机制

本文介绍了如何在SpringBoot应用中配置和使用RabbitMQ的发送确认和消费手动确认机制。通过配置RabbitMQ的相关参数,实现了生产者发送消息的ConfirmCallback和ReturnCallback回调,以及消费者消息的自动确认、手动确认,详细阐述了各种确认机制的工作原理和异常处理策略。
摘要由CSDN通过智能技术生成

1. 配置RabbitMQ

# 发送确认

spring.rabbitmq.publisher-confirms=true

# 发送回调

spring.rabbitmq.publisher-returns=true

# 消费手动确认

spring.rabbitmq.listener.simple.acknowledge-mode=manual

2. 生产者发送消息确认机制

其实这个也不能叫确认机制,只是起到一个监听的作用,监听生产者是否发送消息到exchange和queue。

生产者和消费者代码不改变。

新建配置类 MQProducerAckConfig.java 实现ConfirmCallback和ReturnCallback接口,@Component注册成组件。

ConfirmCallback只确认消息是否到达exchange,已实现方法confirm中ack属性为标准,true到达,反之进入黑洞。

ReturnCallback消息没有正确到达队列时触发回调,如果正确到达队列不执行。

package com.fzb.rabbitmq.config;

import org.apache.commons.lang3.SerializationUtils;

import org.springframework.amqp.core.Message;

import org.springframework.amqp.rabbit.connection.CorrelationData;

import org.springframework.amqp.rabbit.core.RabbitTemplate;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**

* @Description 消息发送确认

*

* ConfirmCallback 只确认消息是否正确到达 Exchange 中

* ReturnCallback 消息没有正确到达队列时触发回调,如果正确到达队列不执行

*

* 1. 如果消息没有到exchange,则confirm回调,ack=false

* 2. 如果消息到达exchange,则confirm回调,ack=true

* 3. exchange到queue成功,则不回调return

* 4. exchange到queue失败,则回调return

* @Author jxb

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值