1月27日java假期学习读书笔记

一、学习目标
了解Spring Boot异步处理的基本概念和使用方法。
掌握如何在Spring Boot中集成RabbitMQ实现消息队列功能。
学习RabbitMQ的基本概念和工作原理。
通过实际练习,实现一个简单的异步任务和消息队列示例。
理解异步处理和消息队列在分布式系统中的应用场景。
二、学习内容
(一)Spring Boot异步处理

  1. 异步处理的概念
    异步处理允许程序在等待某些操作完成时继续执行其他任务,从而提高应用的响应性和性能。
    在Spring Boot中,可以通过@Async注解实现异步方法调用。

  2. 配置异步支持
    启用异步支持:
    java
    复制
    @Configuration
    @EnableAsync
    public class AsyncConfig {
    }
    定义异步方法:
    java
    复制
    @Service
    public class AsyncService {
    @Async
    public CompletableFuture asyncTask(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 {
    CompletableFuture future = asyncService.asyncTask("Hello");
    return future.get(); // 阻塞等待异步任务完成
    }
    }
    (二)RabbitMQ集成

  3. RabbitMQ简介
    RabbitMQ是一个开源的消息代理,支持多种消息协议,如AMQP。
    它允许应用程序通过消息队列进行异步通信。

  4. RabbitMQ的基本概念
    Exchange(交换机):接收消息并根据规则将消息路由到队列。
    Queue(队列):存储消息的地方。
    Binding(绑定):将队列与交换机绑定。
    Consumer(消费者):从队列中接收消息的应用程序。
    Producer(生产者):发送消息的应用程序。

  5. 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);
    }
    }
    (三)实际练习:实现一个简单的消息队列示例

  6. 创建生产者和消费者
    生产者:
    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);
    }
    }

  7. 运行和测试
    启动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接收消息,非常方便。
    实践的重要性
    通过实际编写代码,我更好地理解了异步处理和消息队列的实现方法。
    实践可以帮助快速发现和解决问题,加深对知识点的理解。

posted @ 2025-02-19 23:43  头发少的文不识  阅读(18)  评论(0)    收藏  举报