SpringBoot整合RabbitMQ--RabbitTemplate的配置--方法/实例

原文网址:SpringBoot整合RabbitMQ--RabbitTemplate的配置--方法/实例_IT利刃出鞘的博客-CSDN博客

简介

        本文用实例介绍SpringBoot整合RabbitMQ时RabbitTemplate的配置。

confirm回调函数

作用

设置confirm回调函数。

实例

回调函数

/**
 * 消息发送成功的回调
 * 需要开启送确认:publisher-confirms: true
 **/
@Slf4j
public class RabbitConfirmCallBack 
        implements RabbitTemplate.ConfirmCallback {
    @Override
    public void confirm(CorrelationData correlationData, boolean ack, String cause) {
        log.info("消息唯一标识: {}", correlationData);
        log.info("确认状态: {}", ack);
        log.info("造成原因: {}", cause);
    }
}

注册回调函数

@Configuration
@AllArgsConstructor
public class RabbitInitializingBean implements InitializingBean {

    private RabbitTemplate rabbitTemplate;

    @Override
    public void afterPropertiesSet() throws Exception {
        rabbitTemplate.setConfirmCallback(new RabbitConfirmCallBack());
    }
}

return回调函数

作用

设置return回调函数。

实例​​​​​​​

回调函数

/**
 * 发生异常时的消息返回提醒
 * 需要开启发送失败退回: publisher-returns: true
 **/
@Slf4j
public class RabbitReturnCallback 
        implements RabbitTemplate.ReturnCallback {
    @Override
    public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
        log.info("消息主体: {}", message);
        log.info("回复编码: {}", replyCode);
        log.info("回复内容: {}", replyText);
        log.info("交换器: {}", exchange);
        log.info("路由键: {}", routingKey);
    }
}

注册回调函数

@Configuration
@AllArgsConstructor
public class RabbitInitializingBean implements InitializingBean {

    private RabbitTemplate rabbitTemplate;

    @Override
    public void afterPropertiesSet() throws Exception {
        rabbitTemplate.setReturnCallback(new RabbitReturnCallback());
    }
}

强制处理消息

作用

        确保没有对应的queue时每一个消息都会被处理,不会被丢弃。

实例

rabbitTemplate.setMandatory(true);

详解

        当mandatory设置为true时,若exchange根据自身类型和消息routingKey无法找到一个合适的queue存储消息,那么broker会调用basic.return方法将消息返还给生产者。当mandatory设置为false时,出现上述情况broker会直接将消息丢弃。

单独的发送连接

作用

使用单独的发送连接,避免生产者由于各种原因阻塞而导致消费者同样阻塞

实例

rabbitTemplate.setUsePublisherConnection(true); 

猜你喜欢

转载自blog.csdn.net/feiying0canglang/article/details/124997069
今日推荐