Springboot接入RabbitMQ详细教程
2024-08-24 06:24:06
本文适用于对 RabbitMQ 有所了解的人,在此不讨论MQ的原理,只讨论如何接入。其实Spring Boot 集成 RabbitMQ 非常简单,本文章使用的是Spring Boot 提供了spring-boot-starter-amqp
项目对消息各种支持。
接下来将进入正题,六步轻松教你接入RabbitMQ
1.配置pom文件所依赖的主要jar包
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
2.配置文件(application.properties)
## rabbitmq
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=root
spring.rabbitmq.password=root
spring.rabbitmq.virtual-host=/ # rabbitmq消息确认
spring.rabbitmq.publisher-confirms=true
spring.rabbitmq.publisher-returns=true ## rabbitmq-config
rabbitmq.exchange-key = rabbitmq.test.exchange
rabbitmq.routing-key = rabbitmq.test.routing.key
rabbitmq.queue-name=rabbitmq.queue.name.test
3.交换机和队列绑定配置
@Value("${rabbitmq.queue-name}")
String queueName; @Value("${rabbitmq.exchange-key}")
String exchangeKey; @Value("${rabbitmq.routing-key}")
String routingKey; @Bean(value = "${rabbitmq.queue-name}")
public Queue initOrderCancelQueue(){
return new Queue(queueName) ;
} @Bean(value = "${rabbitmq.exchange-key}")
public CustomExchange customExchange(){
Map<String,Object> args=new HashMap<>();
return new CustomExchange(exchangeKey,"topic",true,false,args);
} @Bean
public Binding binding(@Qualifier(value = "${rabbitmq.queue-name}") Queue queue,
@Qualifier(value = "${rabbitmq.exchange-key}") CustomExchange exchange){
return BindingBuilder
.bind(queue)
.to(exchange)
.with(routingKey)
.and(exchange.getArguments());
}
4.生产者
@Value("${rabbitmq.exchange-key}")
String exchangeKey; @Autowired
private AmqpTemplate amqpTemplate;
/**
* 发送MQ
* @param routingKey
* @param obj 参数
*/
public void sendNotification(String routingKey, Object obj){
this.amqpTemplate.convertAndSend(exchangeKey,routingKey,obj);
}
5消费者
@RabbitHandler
@RabbitListener(queues = "${rabbitmq.queue-name}")
public void receiveRabbitmqMsg(Message msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag){
String funcName="接收到RabbitmqMsg";
logger.info("{}:{}",funcName,msg);
try { }catch(Exception e) { }finally { }
}
6.测试
@Autowired
RabbitmqProducer producer; @Value("${rabbitmq.routing-key}")
String routingKey; public void sendMsg(){
TestModel testModel =new TestModel();
testModel.setName("fxx");
testModel.setAge(18);
testModel.setGender("girl");
try {
producer.sendNotification(routingKey,testModel);
}catch (Exception e){
logger.error("系统异常:"+e.toString());
}
}
搞定!就这么简单,赶快自己动手试试吧
最新文章
- Chrome Crx 插件下载
- MySQL Spatial Extensions 地理信息
- 使用awstats分析iis站点的日志
- Ubuntu1404+Django1.9+Apache2.4部署配置2配置文件设置
- TCP/IP 邮件的原理
- Hibernate分页
- Multi-Channel MAC for Ad Hoc Networks: Handling Multi-Channel Hidden Terminals Using A Single Transceiver
- 安装64位Oracle 10g超详细教程
- Nagios邮件报警
- es6的一些个人总结
- Swift类中如何创建一个对外只读对内可读写的属性
- 20172328 2018-2019《Java软件结构与数据结构》第八周学习总结
- SQL-结构化查询语言(2)
- Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
- Spark性能优化(1)——序列化、内存、并行度、数据存储格式、Shuffle
- wp中的双向绑定
- python: 随机选择
- 【BZOJ4551】[Tjoi2016&;Heoi2016]树 并查集
- Java开发过程中乱码问题理解
- Android ToggleButton(开关函数)与switch (开关按钮)
热门文章
- MathType如何打出带圆圈的点
- Postman实用小技巧
- 【mq学习笔记】mq查找路由信息与故障延迟
- mfc c++优化
- Codeforces Educational Round 94 (Rated for Div. 2)
- PyQt(Python+Qt)学习随笔:自定义信号在emit发射信号时报错:AttributeError: object has no attribute
- 安恒2018年三月月赛MISC蜘蛛侠呀
- 冲刺Day6
- 百度前端技术学院-基础-day17-18
- When you received Ubuntu...