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

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

你可能感兴趣的:(rabbitmq,手动提交)