案例源码解读及思路:RabbitMQ在springboot中的配置
消息队列主要在于异步和服务解耦,一般在大型IT应用广泛。比如我在开发实践中,A服务调用了发送邮件和espace消息的服务B,使用异步线程,基于HTTP请求。这个功能符合消息队列的使用场景。但是由于使用该场景小,使用消息队列有学习成本,故没有使用,从侧面说明了消息队列使用的广泛性。
如果两个服务能通信(消息),那么也可以实现RPC,比如发邮件,espace这个过程,只不过做成一般的rpc需要一些封装。那么现在来学习一下高性能的,流行的RabbitMQ。其使用Erlang语言编写,并发性能好,使用AMQP协议,支持跨语言。但是安装RabbitMQ需要安装Erlang,并邦本要兼容。
ActiveMQ比较轻量级,文档支持也好。
在消息中间件中,消费者怎么消费消息是重点,通常做法是定义消息监听器。activemq提供了3种消息监听器,MessageListener, SessionAwareMessageListener, MessageListenerAdapter. 后面两种消息监听器都是需要收到消息后需要确认或者回复时使用的(双向消息)。
程序员的高级之处不是什么都会,而是对自己不会的进行抽象,然后完成自己的工作。比如对于RabbitMQ,按照字面理解,就将其看成Message Queue,也就是用来容纳对象的集合。很多功能都拆分给一个专一的模块,然后使用tcp/ip通信,使用端口号,最熟悉的就是mysql等数据库产品。回归正题,spring中怎么配置RabbitMQ的参数呢?看源码:
- @ConfigurationProperties(prefix = "spring.rabbitmq")
- public class RabbitProperties {
- /**
- * RabbitMQ host.
- */
- private String host = "localhost";
- /**
- * RabbitMQ port.
- */
- private int port = 5672;
- /**
- * Login user to authenticate to the broker.
- */
- private String username = "guest";
这和数据库的配置美什么大的区别,以spring.rabbitmq开头,将配置信息封装成一个对象,然后就可以使用这个对象了,那么问题来了@ConfigurationProperties这个注解是什么呢?它的作用已经很明显了,就是从properties文件提取以spring.rabbitmq开头的字符串。
- @Configuration
- @ConditionalOnClass({ RabbitTemplate.class, Channel.class })
- @EnableConfigurationProperties(RabbitProperties.class)
- @Import(RabbitAnnotationDrivenConfiguration.class)
- public class RabbitAutoConfiguration { // 这是RabbitAutoConfiguration的注解,基本思路就是如果有Rabbitmq,spring会去加载这个bean,
而RabbitAutoConfiguration告诉spring具体怎么加载
参考博文:https://sixdegree.github.io/2019/01/05/Rabbitmq.html
acivemq博文:https://www.cnblogs.com/liuyuan1227/p/10771460.html
案例源码解读及思路:RabbitMQ在springboot中的配置的更多相关文章
- SpringMVC源码解读 - HandlerMapping
SpringMVC在请求到handler处理器的分发这步是通过HandlerMapping模块解决的.handlerMapping 还处理拦截器. 先看看HandlerMapping的继承树吧 可以大 ...
- go 中 sort 如何排序,源码解读
sort 包源码解读 前言 如何使用 基本数据类型切片的排序 自定义 Less 排序比较器 自定义数据结构的排序 分析下源码 不稳定排序 稳定排序 查找 Interface 总结 参考 sort 包源 ...
- Jfinal启动源码解读
本文对Jfinal的启动源码做解释说明. PS:Jfinal启动容器可基于Tomcat/Jetty等web容器启动,本文基于Jetty的启动方式做启动源码的解读和分析,tomcat类似. 入口 JF ...
- 前端日报-20160527 underscore 源码解读
underscore 源码解读 API文档浏览器 JavaScript 中加号操作符细节 抛弃 jQuery,拥抱原生 JS 从 0 开始学习 GitHub 系列之「加入 GitHub」 js实现克隆 ...
- JFinal的启动源码解读
本文对Jfinal的启动源码做解释说明. PS:Jfinal启动容器可基于Tomcat/Jetty等web容器启动,本文基于Jetty的启动方式做启动源码的解读和分析,tomcat类似. 入口 JF ...
- Webpack探索【15】--- 基础构建原理详解(模块如何被组建&如何加载)&源码解读
本文主要说明Webpack模块构建和加载的原理,对构建后的源码进行分析. 一 说明 本文以一个简单的示例,通过对构建好的bundle.js源码进行分析,说明Webpack的基础构建原理. 本文使用的W ...
- JVM 源码解读之 CMS 何时会进行 Full GC
t点击上方"涤生的博客",关注我 转载请注明原创出处,谢谢!如果读完觉得有收获的话,欢迎点赞加关注. 前言 本文内容是基于 JDK 8 在文章 JVM 源码解读之 CMS GC 触 ...
- Vue 源码解读(11)—— render helper
前言 上一篇文章 Vue 源码解读(10)-- 编译器 之 生成渲染函数 最后讲到组件更新时,需要先执行编译器生成的渲染函数得到组件的 vnode. 渲染函数之所以能生成 vnode 是通过其中的 _ ...
- AFNetworking 3.0 源码解读(三)之 AFURLRequestSerialization
这篇就讲到了跟请求相关的类了 关于AFNetworking 3.0 源码解读 的文章篇幅都会很长,因为不仅仅要把代码进行详细的的解释,还会大概讲解和代码相关的知识点. 上半篇: URI编码的知识 关于 ...
随机推荐
- 【map离散&容斥】Ghosts @Codeforces Round #478 (Div. 2) D
传送门 题意:给你一条直线的斜率a和截距b,和某一时刻n个在直线上的点的横坐标,以及沿坐标轴方向的速度.问你这些点在(-∞,+∞)的时间内的碰撞次数. solution 设两个点在t时刻相碰,有: x ...
- insert /*+append*/为什么会提高性能
在上一篇的blog中 做了下使用,在归档和非归档下,做数据插入http://blog.csdn.net/guogang83/article/details/9219479.结论是在非归档模式下表设置为 ...
- log4j2发送消息至Kafka
title: 自定义log4j2发送日志到Kafka tags: log4j2,kafka 为了给公司的大数据平台提供各项目组的日志,而又使各项目组在改动上无感知.做了一番调研后才发现log4j2默认 ...
- wordclock中文模式快一个小时怎么调整
wordclock屏幕保护,设置为中文模式,显示的时间比系统时间要快一个小时,其实软件自带的配置文件可以设置调整到正常时间…… 工具/原料 wordclock 方法/步骤 桌面上右键菜 ...
- Mockito-简单使用使用
参考案例:(本位使用markdown编写) git.oschina实例:https://gitee.com/lhhTestTool/LhhMockito # LhhMockitomock 单元测试 M ...
- Windows 7安装Tensorflow
以前是在Cent OS中运行Tensorflow,,经常需要切换操作系统,很不方便,于是决定在Windows 7下安装Tensorflow. 过程还是挺复杂的,需要安装的包括:Visual Studi ...
- c/c++字节序转换(转)
字节序(byte order)关系到多字节整数(short/int16.int/int32,int64)和浮点数的各字节在内存中的存放顺序.字节序分为两种:小端字节序(little endian)和大 ...
- Windows中读写ini文件
.ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,来配置应用软件以实现不同用户的要求.配置文件有很多种如ini配置文件,XML ...
- web项目 在visual studio 输出窗口显示调试信息
//始终显示 Trace.WriteLine(“要显示的调试信息”); //调试时显示 Debug.WriteLine(“要显示的调试信息”);
- 【PHP】解析PHP中的数组
目录结构: contents structure [-] 创建数组 删除数组 栈结构 常用的数组处理函数 在这篇文章中,笔者将会介绍PHP中数组的使用,以及一些注意事项.之前笔者已经说过PHP是一门弱 ...