您的位置:首页 > 编程语言 > Java开发

Spring boot快速集成RabbitMQ

2019-03-22 15:48 330 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sessionsong/article/details/88743077

Spring boot快速集成RabbitMQ
本篇文章记录在现有的spring boot 项目里面,快速的基础rabbitmq

  1. pom 文件中添加对 spring-boot-starter-amqp 的支持
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
  1. 在application.yml 配置文件中添加rabbitmq的配置信息
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
  1. RabbitMQ配置
@Configuration
public class RabbitMQConfig {

public static final String TEST_QUEUE = "test";
@Bean
Queue workbenchQueue() {
//        new Queue 如果参数完全一致,会直接返回成功,不创建,不一致返回创建失败,不存在会新建
return new Queue(TEST_QUEUE);
}
}
  1. 实现一个简单的对外提供发送消息的接口。 通过postman 调接口发送消息
@RestController()
public class Sender {

@Autowired
private AmqpTemplate rabbitmqTemplate;

@GetMapping("/sendMsg")
public String sendMsg(String msg) {

System.out.println("Sender:" +msg + " : " + Instant.now());
this.rabbitmqTemplate.convertAndSend(RabbitMQConfig.TEST_QUEUE,msg);
return "SUCCESS";
}
}
  1. 消息接收,处理
/**
* @author songxl
* @create 2019-03-21 16:28
* @desc 接听
**/
@Component
@RabbitListener(queues = RabbitMQConfig.TEST_QUEUE)
public class Receiver {

@RabbitHandler
public void process(String msg){
try {
Thread.sleep(10000); // 为了更好的看到效果  做了10s 的延时
System.out.println("Receiver:" + msg + " : " + Instant.now());
} catch (InterruptedException e) {
e.printStackTrace();
}

}
}
  1. 测试及验证
    使用postman 手动调用上面暴露出来的接口,能后登录rabbitmq的后台 http://localhost:15672/#/queues 查看是不是有消息插入,同时10s 后是不是消失了
    控制台打印

RabbitListener 和@RabbitHandler 的区别
RabbitListener 可以标注在类上,也可以标注在方法上。
如果标注在方法上,表示有此方法来处理
如果标注在类上,表示由当前类来处理消息,具体的处理方法则由 RabbitHandler 来指定。
注:如果同时标注了多个方法,表示mq 消息 的content_type有多种,则通过MessageConverter 转换后的参数类型决定执行那个方法

以上只是自己做的一个简短的总结,如果想要更深入的了解rabbitmq的使用和原理,推荐看以下两篇文章

Spring Boot(八):RabbitMQ 详解
RabbitMQ中 exchange、route、queue的关系

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: