SpringBoot整合Redis和RabbitMQ练习

需求:用SpringBoot+Redis+RabbitMQ技术,PostMan发送一个请求,存储到Redis中,并且在控制台获取打印该信息。用PostMan发送一个请求将信息存储到RabbitMQ,并且在监听该队列打印出信息。

练习1:SpringBoot+Redis

PostMan发送一个请求,存储到Redis中,并且在控制台获取打印该信息。

1.创建一个SpringBoot项目,添加Spring Data Redis的依赖。(省略)

2.创建一个Controller类,编写Pos请求的接口方法,用于接收Postman发送的请求数据并存储到Redis中。示例代码如下:

java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RedisController {

    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    @PostMapping("/storeData")
    public String storeData(@RequestBody String data){
        // 将请求数据存储到Redis中,可以使用任意自定义的键名
        redisTemplate.opsForValue().set("requestData",data);
        return "Data stored successfully in Redis";
    }

3.在创建的Controller类,添加一个GET请求的接口方法,用于从Redis中获取数据并在控制台打印该信息。示例代码如下:

java 复制代码
package com.example.redisdemo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RedisController {

    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    @GetMapping("/getData")
    public String getData() {
        // 从Redis中获取数据
        String data = redisTemplate.opsForValue().get("requestData");
        System.out.println("Data from Redis: " + data);
        return "Data from Redis: " + data;
    }
}

4.在应用的配置文件(例如application.properties)中添加端口信息和Redis的配置信息。示例代码如下:

xml 复制代码
server.port=8888
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=123456
spring.redis.database=0

以上示例中,配置了Redis的主机地址、端口和数据库信息。如果 Redis 没有设置密码,spring.redis.password 可以为空。

5.启动应用,然后使用Postman发送一个POST请求,请求的URL为http://localhost:8888/storeData,请求体中包含要存储到Redis的数据。

6.再使用Postman发送一个GET请求,请求的URL为http://localhost:8888/getData,你将在控制台中看到打印出存储在Redis中的信息。

练习2:SpringBoot+RabbitMQ

PostMan发送一个请求,存储到RabbitMQ中,并且在监听该队列打印出信息。

1.配置RabbitMQ连接:在Spring Boot的配置文件(application.properties或application.yml)中添加以下配置信息:

xml 复制代码
server.port=8888
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

2.创建消息发送者:创建一个发送消息的类,比如MessageSender,使用RabbitTemplate发送消息到RabbitMQ队列,同时在该类中添加一个方法用于发送消息,例如:

java 复制代码
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MessageSender {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Bean
    public Queue queue() {
        return new Queue("ccc", false);
    }

    public void sendMessage(String message) {
        rabbitTemplate.convertAndSend("ccc", message);
    }
}

3.创建消息监听者:创建一个消息监听的类,比如MessageListener,使用@RabbitListener注解监听队列中的消息,并在方法中将消息打印到控制台,例如:

java 复制代码
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
public class MessageListener {

    @RabbitListener(queues = "ccc")
    public void receiveMessage(String message) {
        System.out.println("Message received: " + message);
    }
}

4.启动应用程序:在Spring Boot的入口类上添加 @EnableRabbit 注解,以启用RabbitMQ的相关功能,例如:

java 复制代码
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableRabbit
public class RabbitmqdemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(RabbitmqdemoApplication.class, args);
    }

}

5.发送和监听消息:在需要发送和监听消息的地方使用 @Autowired注入MessageSender,并调用 sendMessage 方法发送消息。监听者将自动侦听指定队列的消息并将其打印到控制台。例如:

java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class MyController {

    @Autowired
    private MessageSender messageSender;

    @PostMapping("/send")
    @ResponseBody
    public String sendMessage(@RequestParam("message") String message) {
        messageSender.sendMessage(message);
        return "Message sent successfully.";
    }
}
相关推荐
我是一只代码狗25 分钟前
springboot中使用线程池
java·spring boot·后端
hello早上好37 分钟前
JDK 代理原理
java·spring boot·spring
PanZonghui42 分钟前
Centos项目部署之运行SpringBoot打包后的jar文件
linux·spring boot
沉着的码农1 小时前
【设计模式】基于责任链模式的参数校验
java·spring boot·分布式
zyxzyx6661 小时前
Flyway 介绍以及与 Spring Boot 集成指南
spring boot·笔记
Fireworkitte1 小时前
Redis 源码 tar 包安装 Redis 哨兵模式(Sentinel)
数据库·redis·sentinel
西岭千秋雪_3 小时前
Redis性能优化
数据库·redis·笔记·学习·缓存·性能优化
一头生产的驴3 小时前
java整合itext pdf实现自定义PDF文件格式导出
java·spring boot·pdf·itextpdf
Uluoyu3 小时前
redisSearch docker安装
运维·redis·docker·容器
程序员张35 小时前
SpringBoot计时一次请求耗时
java·spring boot·后端