SpringBoot动态创建绑定rabbitMq队列
SpringBoot动态创建绑定rabbitMq队列
一、介绍
在以前,我写过一篇如何使用SpringBoot整合rabbitMq的文章。
SpringBoot整合rabbitMq | 半月无霜 (banmoon.top)
上面这种方法,是自己创建队列,交换机,绑定。生成Bean,从而实现队列等等的创建。
这种方式太过于繁琐,有没有一种方法可以快速创建呢,我们只管使用就行了
还真的有,只需要在配置文件中配置队列、交换机等信息,就可以在服务启动的时候自动创建并绑定。
一次偶然间,在csdn上看到了,动态创建rabbitMq队列的文章。
拉出来魔改了一下,只要再配置文件中配置了相关的实现,实现了队列、交换机的绑定。
同时还解决了,多个开发连接同一个rabbitMq,导致自己生产的消息,被其他同事消费走的问题。
二、代码
1)读取配置的代码
这是RabbitModuleInfoProperties.java,读取配置文件中的信息,生成信息对象
12345678910111213141516171819202122232425262728293031323334353637383940414 ...
ComplatableFuture初解使用
ComplatableFuture初解使用
一、介绍
CompletableFuture是Java中的一个类,用于进行异步编程。它提供了一套强大的方法,可以方便地管理异步操作、处理结果和错误等。
二、方法
方法
功能
入参
出参
completedFuture(T value)
创建一个已经完成结果的CompletableFuture对象
无
有
runAsync(Runnable runnable)
启动异步任务
无
无
supplyAsync(Supplier<U> supplier)
启动异步任务
无
有
thenApply(Function<T, U> function)
转换一个CompletableFuture对象及内容
有
有
thenApplyAsync(Function<T, U> fn)
启动异步任务,转换一个CompletableFuture对象及内容
有
有
thenAccept(Consumer<T> consumer)
消费一个CompletableFuture对象的内容
有
...
SpringBoot日志详解使用include
SpringBoot日志详解使用include
一、介绍
前段时间,公司让我整改SpringBoot日志的配置,我改的老痛苦了。
一共有7个微服务,其中每一个微服务各自都有4个这样logback-spring-{active}.xml文件。
正好我看过SpringBoot中是怎么写的,给大家截图看下
既然如此,我们也可以通过include标签来进行编写。
哦对了,SpringBoot使用的logback日志,里面的含义代表什么,我就不详细讲了。
具体可以看我的这边文章,SpringBoot日志配置详情 | 半月无霜 (banmoon.top)
二、配置
这边创建两份基础文件,分别是
banmoon-logback-defined.xml:里面定义了一些参数
banmoon-logback-append.xml:里面定义了一些输出
banmoon-logback.xml:将上面的两个文件引入整合,并加上了一些日志等级的配置
看看文件所在的目录,都在scr/main/java的包内
1)banmoon-logback-defined.xml
123 ...
如何读取到maven中profile设置的参数
如何读取到maven中profile设置的参数
一、介绍
在maven工程中,我们会用到profiles来配置不同环境的不同的参数。
我们下面介绍如何读取到在这里面设置的值
1234567891011121314151617<profiles> <profile> <id>local</id> <properties> <host>localhost:2333</host> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>dev</id> <properties> ...
JDK17的新特性写法
JDK17的新特性写法
一、介绍
JDK 17 是 Java Development Kit(Java 开发工具包)的一个版本,是 Oracle 公司提供的 Java SE(Java 平台,标准版)的一部分。以下是 JDK 17 的一些基本信息:
版本号:JDK 17 的完整版本号是 17,它是 Java SE 17 的版本。
发布日期:JDK 17 v17.0.0 在 2021 年 9 月 14 日正式发布。
LTS 版本:JDK 17 被标记为 “LTS”(长期支持)版本。LTS 版本提供长期支持和维护,适合用于生产环境。
特性更新:JDK 17 引入了一些新的特性、改进和增强,包括但不限于密封类、基础类型的模式匹配、日期时间API的升级等。
垃圾回收器:JDK 17 包含了多种垃圾回收器,包括 ZGC、G1GC、ParallelGC 等,以满足不同场景下的需求。
二、新特性
1)switch
可以不用再写break了,可以进行简化
1234567891011121314151617181920212223242526272829303132package ...
MySQL插入重复后进行覆盖更新
MySQL插入重复后进行覆盖更新
一、介绍
在MySQL中,常常会有唯一键的约束,当使用Java插入重复的值后,会报异常我们需要进行捕获处理。
上面的解决思路,确实是一种办法,但我将介绍一下MySQL的一种插入写法,可以解决这种插入重复数据的问题。
二、使用
首先,我们先建立一张有唯一键的表,并初始化插入一条数据
1234567891011121314CREATE TABLE `tb_user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(20) NOT NULL COMMENT '姓名', `old_name` varchar(20) DEFAULT NULL COMMENT '曾用名', `id_card` varchar(20) NOT NULL COMMENT '身份证号码', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT ...
如何在html中使用Vue3
如何在html中使用Vue3
一、介绍
作为一名后端人员,有时候会写一点前端代码配合使用。
但比较轻量,没有必要使用脚手架创建工程,故此我在html中使用就好了。
正如那句话,适合自己的才是最好的。
二、代码
1)引入Vue,并创建Vue实例
在官网上,已经讲得很清楚了,我们可以这样使用
1234567891011121314151617181920212223242526272829<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>html使用vue</title></head><body> <div id="app" v-c ...
SpringBootAdmin监控程序
SpringBootAdmin监控程序
一、介绍
Spring Boot Admin 是一个用于监控和管理 SpringBoot 应用程序的开源项目。它提供了一个可视化的用户界面,通过该界面可以实时监控应用程序的运行状态、性能指标等信息。
Spring Boot Admin可以监控多个 SpringBoot 应用程序,它提供了以下功能:
简单的集成:Spring Boot Admin提供了一个易于集成的客户端库,可以方便地将应用程序连接到监控服务器。
实时监控:可以查看应用程序的运行状态、线程池、内存使用情况、请求指标等实时信息,帮助开发人员及时发现和解决问题。
健康检查:Spring Boot Admin可以监测应用程序的健康状态,包括数据库连接、缓存服务、消息队列等组件的可用性。
日志管理:可以查看和管理应用程序的日志,包括实时查看日志、搜索和过滤日志等功能。
通知与告警:Spring Boot Admin支持通过邮件、Slack 等方式发送通知和告警,例如当应用程序发生异常或出现性能问题时。
总之,Spring Boot Admin提供了一个便捷的监控和管 ...
junit4整合PowerMockito进行单元测试
junit4整合PowerMockito进行单元测试
一、介绍
在单元测试中,代码里面往往有一些需要连接数据库、调用第三方远程的代码。
由于没有环境,这些代码的存在,会给单元测试造成影响。
所以我们在单测中,往往会使用mock的方式对这些代码做一个数据的模拟,从而达到对代码进行测试的一个目的。
所以单测需要满足以下几点
可复用:单测代码可以重复执行
无环境:不要依赖数据库,第三方接口等外部的环境依赖
方法级细粒度:单测代码应该针对具体一个方法的测试,
高覆盖率:如果代码中复杂度过高,单测要覆盖到方法中的每一行代码
自动断言:每一段单测代码都应该有自己的断言方法,而不是通过打印再人工查看正确性
所以我们就有了Mockito,它可以模拟对象,模拟对象方法的返回值,来完成mock。
本文使用的是PowerMockito,它是由Mockito的基础上开发而来,语法规则基本一致,同时也有一些自己的增强,可以对静态方法,局部变量进行mock。
二、初步入门
假设我们有下面这两段代码PowerMockitoServiceImpl.java和PowerMockitoMapper ...
MySQL的MVCC是什么,有什么用?
MySQL的MVCC是什么,有什么用?
一、介绍
面试被问到了MVCC,我不知道啊,一脸懵逼!
于是回家查询了资料,记录一下
实际上,MVCC的全称是Multi Version ConCurrency Control,翻译过来就是多版本并发控制。
二、概念
1)隔离级别
指的是一种提高并发的技术。最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞。引入多版本之后,只有写写之间相互阻塞,其他三种操作都可以并行。在MySQL中,这样大幅度提高了InnoDB的并发度。在内部实现中,InnoDB通过undo log保存每条数据的多个版本,并且能够找回数据历史版本提供给用户读,每个事务读到的数据版本可能是不一样的。在同一个事务中,用户只能看到该事务创建快照之前已经提交的修改和该事务本身做的修改。
首先我们先了解一下数据库事务的隔离级别
未提交读(READ UNCOMMITED):也就是脏读,当一个事务读取到另外一个事务修改但未提交的数据时
已提交读 (READ COMMITED):简称RC
可重复读(REPEATABLE READ):简称RR
可串行化(SERIAL ...