0


简单示范RabbitMQ在Spring Cloud中的使用

介绍

在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的使用:


本文转载自: https://blog.csdn.net/m0_73938805/article/details/143469876
版权归原作者 Demons_kirit 所有, 如有侵权,请联系我们删除。

“简单示范RabbitMQ在Spring Cloud中的使用”的评论:

还没有评论