1月27日java假期学习读书笔记
一、学习目标
了解Spring Boot异步处理的基本概念和使用方法。
掌握如何在Spring Boot中集成RabbitMQ实现消息队列功能。
学习RabbitMQ的基本概念和工作原理。
通过实际练习,实现一个简单的异步任务和消息队列示例。
理解异步处理和消息队列在分布式系统中的应用场景。
二、学习内容
(一)Spring Boot异步处理
-
异步处理的概念
异步处理允许程序在等待某些操作完成时继续执行其他任务,从而提高应用的响应性和性能。
在Spring Boot中,可以通过@Async注解实现异步方法调用。 -
配置异步支持
启用异步支持:
java
复制
@Configuration
@EnableAsync
public class AsyncConfig {
}
定义异步方法:
java
复制
@Service
public class AsyncService {
@Async
public CompletableFutureasyncTask(String input) throws InterruptedException {
System.out.println("Async Task started with input: " + input);
Thread.sleep(2000); // 模拟耗时操作
return CompletableFuture.completedFuture("Processed: " + input);
}
}
调用异步方法:
java
复制
@RestController
public class AsyncController {
@Autowired
private AsyncService asyncService;@GetMapping("/async")
public String callAsyncTask() throws ExecutionException, InterruptedException {
CompletableFuturefuture = asyncService.asyncTask("Hello");
return future.get(); // 阻塞等待异步任务完成
}
}
(二)RabbitMQ集成 -
RabbitMQ简介
RabbitMQ是一个开源的消息代理,支持多种消息协议,如AMQP。
它允许应用程序通过消息队列进行异步通信。 -
RabbitMQ的基本概念
Exchange(交换机):接收消息并根据规则将消息路由到队列。
Queue(队列):存储消息的地方。
Binding(绑定):将队列与交换机绑定。
Consumer(消费者):从队列中接收消息的应用程序。
Producer(生产者):发送消息的应用程序。 -
Spring Boot集成RabbitMQ
添加依赖:
xml
复制
org.springframework.boot
spring-boot-starter-amqp
配置RabbitMQ连接:
properties
复制
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
发送消息:
java
复制
@Service
public class RabbitMQSender {
@Autowired
private RabbitTemplate rabbitTemplate;public void sendMessage(String message) {
rabbitTemplate.convertAndSend("myQueue", message);
System.out.println("Message sent: " + message);
}
}
接收消息:
java
复制
@Service
public class RabbitMQReceiver {
@RabbitListener(queues = "myQueue")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
(三)实际练习:实现一个简单的消息队列示例 -
创建生产者和消费者
生产者:
java
复制
@RestController
public class RabbitMQController {
@Autowired
private RabbitMQSender sender;@GetMapping("/send")
public String sendMessage(@RequestParam String message) {
sender.sendMessage(message);
return "Message sent";
}
}
消费者:
java
复制
@Service
public class RabbitMQReceiver {
@RabbitListener(queues = "myQueue")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
} -
运行和测试
启动RabbitMQ服务(可以使用Docker或本地安装)。
启动Spring Boot应用。
访问http://localhost:8080/send?message=Hello,发送消息。
查看控制台输出,确认消息被接收。
三、学习心得
异步处理的重要性
异步处理可以显著提高应用的性能和响应性,尤其是在处理耗时任务时。
Spring Boot通过@Async注解和CompletableFuture简化了异步编程。
RabbitMQ的优势
RabbitMQ提供了可靠的消息传递机制,支持多种消息协议和扩展性。
它可以用于实现分布式系统中的异步通信和任务队列。
Spring Boot与RabbitMQ的集成
Spring Boot通过spring-boot-starter-amqp模块提供了对RabbitMQ的集成。
使用RabbitTemplate发送消息,通过@RabbitListener接收消息,非常方便。
实践的重要性
通过实际编写代码,我更好地理解了异步处理和消息队列的实现方法。
实践可以帮助快速发现和解决问题,加深对知识点的理解。
浙公网安备 33010602011771号