简介:
将RabbitMQ 整合到 SpringBoot中。 并实现一个入门程序。
入门程序
导入依赖
在IDEA 创建SpringBoot工程前勾选以下依赖
修改配置文件
修改 application.properties 或 applications.yml 文件, 加入RabbitMQ 的配置信息
1. 生产者(发送消息)
创建一个 MessageProducer
类,用于发送消息
package com.wastingmisaka.springbootrabbitmq;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
/**
* 生产者类
*/
@Component
public class MessageProducer {
private final RabbitTemplate rabbitTemplate;
@Autowired
public MessageProducer(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
public void sendMessage(String message) {
System.out.println("Sending message: " + message);
rabbitTemplate.convertAndSend("helloQueue", message);
}
}
2. 配置队列
创建一个 RabbitMQConfig 类,用于配置队列、交换器和绑定等。
package com.wastingmisaka.springbootrabbitmq;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 配置类
* @Congiuration 告知Spring这是一个配置类
*/
@Configuration
public class RabbitMQConfig {
@Bean
public Queue helloQueue() {
return new Queue("helloQueue", false);
// 创建一个 helloQueue 的队列,且不需要持久化。
}
}
此处仅配置了队列。
3. 消费者(接收消息)
package com.wastingmisaka.springbootrabbitmq;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
/**
* 消费者类
*/
@Component
public class MessageConsumer {
@RabbitListener(queues = "helloQueue")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
@RabbitListener 注解用来监听指定队列的消息,当有消息到达时,携带信息参数自动触发方法执行。
4. 控制器(发起请求)
创建一个用于发起HTTP请求的控制器
package com.wastingmisaka.springbootrabbitmq;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MessageController {
private final MessageProducer messageProducer;
public MessageController(MessageProducer messageProducer) {
this.messageProducer = messageProducer;
}
@GetMapping("/test")
public String test(){
String msg = "hello,world";
messageProducer.sendMessage(msg);
return "Message sent: "+msg;
}
@GetMapping("/send")
public String sendMessage(@RequestParam String message) {
messageProducer.sendMessage(message);
return "Message sent: "+message;
}
}
其中 /test 请求路径包含了一个测试方法,向RabbitMQ发送 hello,world
消息。
/send 请求路径可以添加参数。
测试结果:
控制台对应的方法被调用。 且RabbitMQ管理台中存在helloQueue 队列
页面也返回了正确的信息
Comments NOTHING