介绍
在spring cloud的项目中使用RabbitMQ之前得先给自己的电脑配置RabbitMQ
超详细的RabbitMQ入门,看这篇就够了!-阿里云开发者社区
我是根据该篇文章配置的RabbitMQ。
下载RabbitMQ
先配置语言环境,一直next就行
Otp 20.0 - Erlang/OTP
编辑erl语言的环境变量
配置完后进入cmd查询语言配置是否成功。
版本记得对应上,erl和rabbitmq的版本兼容问题记得注意一下,或者跟着我的配也可以。
我选的RabbitMQ的版本是3.7.3。
之后一直next就行,然后找到安装路径后操作,打开对应栏的控制台然后输入
rabbitmq-plugins enable rabbitmq_management
安装插件
安装完插件后记得用命令启动(shell)
rabbitmqctl status
之后输入网址http://localhost:15672,账号密码默认是:guest/guest
SpringCloud简单实例
整体框架如下图,如果有什么不懂可以看看我之前的文章,从零开始搭建一个属于自己的SpringCloud项目
生产者和服务者的模块都得导入相关的RabbitMQ的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
在两个模块的
application.yml
中配置 RabbitMQ 的连接信息:
spring:
rabbitmq:
host: localhost # RabbitMQ 主机地址
port: 5672
username: guest
password: guest
queue-name: myQueue # 自定义队列名称
生产者模块(order80)
配置类(RabbitMQconfig)
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitMQConfig {
// 队列名称
private final String queueName = "myQueue";
@Bean
public Queue queue() {
return new Queue(queueName, true); // 设置队列持久化
}
@Bean
public TopicExchange exchange() {
return new TopicExchange("myExchange");
}
@Bean
public Binding binding(Queue queue, TopicExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with("routing.key");
}
}
Service类
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class MessageProducer {
private final RabbitTemplate rabbitTemplate;
@Value("${spring.queue-name}")
private String queueName;
public MessageProducer(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
public void sendMessage(String message) {
rabbitTemplate.convertAndSend(queueName, message);
System.out.println("Sent message: " + message);
}
}
Controller类
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("/send")
public String sendMessage(@RequestParam String message) {
messageProducer.sendMessage(message);
return "Message sent: " + message;
}
}
消费者模块(consumer8001)
接收类
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;
@Service
public class MessageConsumer {
@RabbitListener(queues = "${spring.queue-name}")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
// 可以在这里进行消息处理逻辑
}
}
调试
我之后便在postman中进行调试该接口
可以看出来该接口是可以成功使用的,之后我们便去看看控制台和RabbitMQ的输出与反应,对应如图所示:
控制台的输出与接收:
RabbitMQ的使用:
版权归原作者 Demons_kirit 所有, 如有侵权,请联系我们删除。