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.";
    }
}
相关推荐
骆晨学长10 分钟前
基于springboot的智慧社区微信小程序
java·数据库·spring boot·后端·微信小程序·小程序
bjzhang7517 分钟前
SpringBoot开发——整合SpringDoc实现在线接口文档
spring boot·springdoc
Flying_Fish_roe39 分钟前
Spring Boot-Session管理问题
java·spring boot·后端
赚钱给孩子买茅台喝41 分钟前
智能BI项目第四期
java·spring boot·spring cloud·aigc
hai405871 小时前
Spring Boot中的响应与分层解耦架构
spring boot·后端·架构
码爸2 小时前
flink 批量压缩redis集群 sink
大数据·redis·flink
工业甲酰苯胺3 小时前
Spring Boot 整合 MyBatis 的详细步骤(两种方式)
spring boot·后端·mybatis
微刻时光3 小时前
Redis集群知识及实战
数据库·redis·笔记·学习·程序人生·缓存
丁总学Java4 小时前
如何使用 maxwell 同步到 redis?
数据库·redis·缓存
蘑菇蘑菇不会开花~4 小时前
分布式Redis(14)哈希槽
redis·分布式·哈希算法