当前位置: 首页 > news >正文

6.23_JAVA_RabbitMQ

1、MQ(RabbitMQ):用来管理生产者、消费者、队列、交换机(exchanges)、虚拟主机

2、Spring AMQP:  简化RabbitMQ的一套属于Spring家族的一套东西

3、WorkQueues模型:让多个人同时接收同一消息

4、啥叫Component 和Bean?

        为了像静态变量一样用这个方法的实例。例如:

@Configuration
public class AppConfig {@Bean  // 关键!告诉 Spring 管理这个返回值public DataSource dataSource() {return new HikariDataSource();}
}@Service
public class UserService {@Autowiredprivate DataSource dataSource; // 成功注入!
}

5、难道开着mq的时候会给后端反馈吗?告诉你发送成功的反馈。

        是的。所以才会有生产者确认:none关闭生产者确认、correlated异步、simple同步

6、生产者确认:none关闭生产者确认、correlated异步、simple同步

        其中none、correlated是不阻塞线程,simple阻塞线程。

        none和correlated区别:

                        none玩完就跑,不关心是否成功

                        correlated要确认成功才行。

7、@Slf4j(自动生成日志对象)

8、@Configuration 、 @Component都与@Bean配合

        区别:@Configuration  配置数据源、第三方库集成等基础设施,配置类一般用@Configuration

                                @Component业务逻辑、服务层、持久层  Service、Controller、Repository一般用@Component,

核心区别:Spring可以直接实例化@Component的类,但只能实例化@Configuration中被@Bean标注的方法,注意:Configuration也可以像Component一样把类本身实例化。

9、构造方法没有返回值。

public class Tool {private final String name;//构造方法,没有返回值public Tool(String name) {this.name = name;}public void use() {System.out.println("Using tool: " + name);}

10、MQ的lazy模式:

  • 接收到消息后直接存入磁盘而非内存

  • 消费者要消费消息时才会从磁盘中读取并加载到内存(也就是懒加载)

11、构造器和set方法啥区别?是不是一个是创造对象的时候用,一个是创造完成再更改的时候用,而没有创造对象的时候没法使用set方法?

        正确。

12、对Bean的理解:假设Bean的方法是Queue lazyQueue()

S1、首先需要一个实体对象,比如:

public class Queue{private String name ;//constructorpublic Queue(String name){this.name=name;}
}

S2、使用@Bean

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration  // 标记为配置类
public class RabbitMQConfig {@Bean  // 声明这是一个 Spring Beanpublic Queue lazyQueue() {// 实际使用 RabbitMQ 的 QueueBuilderreturn new Queue("lazy.queue") {// 这里简化了实现,实际开发中:// QueueBuilder.durable("lazy.queue").lazy().build()};}@Beanpublic Queue normalQueue() {return new Queue("normal.queue");}
}

S3、使用被@Bean了的Queue

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service  // 标记为 Spring 服务组件
public class QueueService {// 通过依赖注入获取 Queue 实例private final Queue lazyQueue;private final Queue normalQueue;// 构造器注入(推荐)@Autowiredpublic QueueService(Queue lazyQueue, Queue normalQueue) {this.lazyQueue = lazyQueue;this.normalQueue = normalQueue;}public void processQueues() {System.out.println("使用懒加载队列: " + lazyQueue.getName());System.out.println("使用普通队列: " + normalQueue.getName());// 实际业务中这里会进行消息操作// rabbitTemplate.convertAndSend(lazyQueue.getName(), message);}
}

13、极少极少的情况会用static,final偶尔会用。

14、@RequiredArgsConstructor

@RequiredArgsConstructor是 Lombok 提供的注解,它会自动生成一个包含所有 final 字段或标记了 @NonNull 且未初始化的字段的构造方法。

        原来用@Bean了的方法创造对象时,有多少private final Queue lazyQueue就要用@Autowired注入多少次。

        而现在只需要对这个类使用一次@RequiredArgsConstructor就可以了。

http://www.lqws.cn/news/493309.html

相关文章:

  • 2025年中科院三区全新算法,恒星振荡优化器:受自然启发的元启发式优化,完整MATLAB代码免费获取
  • hive集群优化和治理常见的问题答案
  • 综述AI生成工具推荐:高效自动化生成学术综述
  • 网络安全之某cms的漏洞分析
  • MocapApi 中文文档 和github下载地址 NeuronDataReader(以下简称 NDR)的下一代编程接口
  • 1 Studying《Systems.Performance》7-13
  • Maven 多模块项目调试与问题排查总结
  • SpreadJS 迷你图:数据趋势可视化的利器
  • Web基础 -SpringBoot入门 -HTTP-分层解耦 -三层架构
  • HTML语义化标签
  • 最近小峰一直在忙国际化项目,确实有点分身乏术... [特殊字符] 不过! 我正紧锣密鼓准备一系列干货文章/深度解析
  • [HTML]iframe显示pdf,隐藏左侧分页
  • Python异步爬虫编程技巧:从入门到高级实战指南
  • 从本地到云端:通过ToolJet和cpolar构建远程开发环境实践过程
  • ​​FFmpeg命令全解析:三步完成视频合并、精准裁剪​​、英伟达显卡加速
  • systemd[1]: Failed to start LSB: Bring up/down networking
  • 在大数据求职面试中如何回答分布式协调与数据挖掘问题
  • 开疆智能CCLinkIE转ModbusTCP网关连接 BORUNTE伯朗特机器人案例
  • 百度AIP:Springboot人脸对比
  • 用安卓手机,怎样远程管理孩子iPhone屏幕使用时间?
  • LNMP 一键部署脚本 shell脚本
  • R语言入门课| 05 一文掌握R语言常见数据类型
  • 面试150 分发糖果
  • 【设计模式精讲 Day 12】代理模式(Proxy Pattern)
  • idea 报错:java: 非法字符: ‘\ufeff‘
  • ISO 26262-11 半导体功能安全学习(二)
  • Meta-华盛顿大学-CMU联合研究多感官触觉表征在机器人操作中的新范式
  • 启用AWS VPC流日志保存到CloudWatch日志组
  • 设计模式精讲 Day 11:享元模式(Flyweight Pattern)
  • WPF中MVVM和MVVMLight模式