RabbitMQ整合到springboot项目(六)

1.引入 spring-boot-starter-amqp
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2. application.properties配置
# RabbitMQ配置
spring.rabbitmq.host=192.168.56.10
spring.rabbitmq.port=5672

# 虚拟主机配置**********这些是消息抵达配置****
spring.rabbitmq.virtual-host=/
# 开启发送端消息抵达Broker确认
spring.rabbitmq.publisher-confirms=true
# 开启发送端消息抵达Queue确认
spring.rabbitmq.publisher-returns=true
# 只要消息抵达Queue,就会异步发送优先回调returnfirm
spring.rabbitmq.template.mandatory=true
# 手动ack消息,不使用默认的消费端确认
spring.rabbitmq.listener.simple.acknowledge-mode=manual
3.发送json数据需要进行配置(使用MessageConvert自动转换为json
@Configuration
public class RabbitConfig {
@Bean
public RabbitTemplate rabbitTemplate(final ConnectionFactory connectionFactory) {
    final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
    rabbitTemplate.setMessageConverter(jsonMessageConverter());
    return rabbitTemplate;
}

@Bean
public Jackson2JsonMessageConverter jsonMessageConverter() {
    return new Jackson2JsonMessageConverter();
}
}

入口类处新增启动注解:

@EnableAspectJAutoProxy(exposeProxy = true)     //开启了aspect动态代理模式,对外暴露代理对象
@EnableDiscoveryClient
@SpringBootApplication
@EnableCaching
@EnableRabbit //Rabbit注解
public class DataCenterApplication {
   

    public static void main(String[] args) {
   
        SpringApplication.run(DataCenterApplication.class, args);
    }
}
4.使用
4.1 发送
package com.xunqi.gulimall.order;

import com.xunqi.gulimall.order.entity.OrderReturnReasonEntity;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.core.*;
import 
Spring Boot整合RabbitMQ时,如果你遇到`publisher-returns`配置已被废弃的情况,这意味着在较新版本的Spring Boot中,原有的配置方法不再推荐使用。为了实现消息的返回机制,你需要采用新的配置方法。 消息返回(Publisher Returns)机制是指当消息被RabbitMQ服务器拒绝或者因无法路由到任何队列而无法投递时,能够将消息返回给发布者。在Spring AMQP或者Spring Boot AMQP中,这通常通过实现`RabbitTemplate`的`ReturnCallback`接口来完成。 以下是一个简化的例子来展示如何在Spring Boot中配置RabbitMQ以使用消息返回机制: 1. 首先,你需要在Spring Boot应用的配置文件中(比如`application.properties`或`application.yml`),配置RabbitMQ的相关属性。 ```properties # application.properties spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest ``` 2. 然后,配置`RabbitTemplate`以使用消息返回机制: ```java import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class RabbitConfig { @Bean public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) { RabbitTemplate template = new RabbitTemplate(connectionFactory); template.setMandatory(true); // 设置为true时,如果交换机无法根据规则路由消息,才会触发返回机制 template.setReturnCallback((message, replyCode, replyText, exchange, routingKey) -> { System.out.println("消息被退回,退回原因:" + replyText); System.out.println("原始消息内容:" + new String(message.getBody())); }); return template; } } ``` 在这段代码中,我们创建了一个`RabbitTemplate`的Bean,并设置了`mandatory`属性为`true`。这意味着如果消息无法路由到任何队列,将会触发返回机制。同时,我们通过`setReturnCallback`方法设置了返回回调,以便在消息被退回时执行相应的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

会飞的小蜗

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

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

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

打赏作者

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

抵扣说明:

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

余额充值