学习目标:
- 预约和排队思考
- kafka 日志
- android 版本升级
- docker 打包xxljob
学习内容:
1、预约和排队实践
终于从繁琐的代码里面,抽离出来时间,来写这篇blog,而且都没有太多时间去思考和想做一些东西。繁琐代码,是哪些呢?字段代码说明缺失在表里面,有点确实不正常,而我对旧代码里面中对mybatis_plus的写法很不是很点太理解,对参数里面有…的用法,里面参数很多,就不如直接传递实体之类的,一个方法多功能。最让我头疼的是,有些updata 之后就不成功。即使报错了也没有提示。是用的不对感觉。还不如mybatis中xml写的自由点吧。
改了一遍有一遍的方法不如重新进行自己实现去。从一个接口用到好几个表里面数据,并且还有修改,如果不执行完,会执行seate锁死的问题。
坏代码
@GlobalTransactional(timeoutMills = 300000, rollbackFor = Exception.class)
@Transactional(rollbackFor = Exception.class)
不知道这样写是否对,感觉别扭。
有些代码运行了,不起作用是最头疼的问题。以前别人开我的代码,很是头疼,现在总算落到自己头上了。
才发现为啥写这么乱的代码,我想把它替换ddd 模式或换成设计模式的方式改造,为了就是能够从业务到代码层次大改造,发现失败了。在有新的方式,在实验吧。
对于这次功能梳理,我进行方法拆解,功能进行单一化。预约是预约的方法,排队时排队的方法。这样就形成了,功能单一,业务看上去清晰,但是if,else写的太多。之前有涉及过这样的总结,哎没有留下笔记,很是失望了。先把功能上去了。
这次主要是将他所有代码进行功能梳理,然后在去掉,将多功能多方法,改为单功能方法,进行了功能方法说明添加。对@Log 里面的功能方法说明都是照抄上面的,一个controller里面进行都一个功能说明,却有不同功能点,进行大砍斧进行梳理和切换。功能走完之后,将其删除无用代码。
2、kafka 日志
工具管理https://www.kafkatool.com/download.html
连接上 用这个即使是集群的或测试 数据,是否进行消费进行很好的监听工具。
日志替换为logback
以及里面配置 日志的大小
其他学习
https://blog.csdn.net/agonie201218/article/details/135504200
https://blog.csdn.net/L596462013/article/details/131720897
3、android 版本升级
我的mac 电脑是15年的。8g内存,android 开发和idea 一起开发很迟内存,并且打包很难了,这次升级android 开发最新版本,用到最新版本开发编辑器。
这次主要使用了gradle-8 和kotlin 1.8.0 版本。
android 创建门槛低了,但是做一个好应用却高了。
像选择图片,视频播放,高级ui界面反而不是很容易了。
其实就让我担心的是打包app。这么低的配置开发android 感觉吃力了,做完这个app 也许就是最后的落幕制作人了。感觉有点像金刚狼最后一步电影一样。希望这次不会失望吧。
4、docker 打包xxljob
定时任务,有很多种,有Quartz、xxljob、powerjob、ScheduledExecutorService、SpringTask等。选择xxljob。也是公司选型进行的。只有干就行了。powerjob符合更多工作流相关的。我们没有用xxljob 很独立就可以。
先将xxl job 下载源码,进行服务开启,第一步注册到nacos 里面,在配置getway路径。这样基本上算完成。 最主要你是选择nacos 版本,这样就选择java spring nacos 和cloud的版本就确定了。
然后将打包成docker,然后在运行,源码里面有一个Dockerfile。这个就是docker 生成的标记了。
其实就俩步骤
docker build -t xxl-job:1.0 .
接着就是run方法
docker run -e "JAVA_OPTS1=appName=dockerTest" -e "JAVA_OPTS2=--server.id=1" -e ENVIR="prod" -d -p 8088:8088 --name xxl-job xxl0job:1.0
运行访问nacos 里面修改配置一下。
加配置
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.application.name=xxl-job-admin
找到com.xxl.job.admin.core.model.XxlJobGroup#getRegistryList 方法
改写成
public List<String> getRegistryList() {
if (addressList!=null && addressList.trim().length()>0) {
String newAddressList = addressList;
// address 执行器管理填入的机器地址 http://ip:port 这里自定义兼容 lb://servicename地址
if(addressList.startsWith("lb:")){
String serviceName =addressList.replace("lb://","");
DiscoveryClient discoveryClient = SpringContextUtil.getBean(DiscoveryClient.class);
List<ServiceInstance> instances = discoveryClient.getInstances(serviceName);
List<String> uriList = instances.stream().map(a -> a.getUri().toString()).collect(Collectors.toList());
newAddressList = StringUtils.join(uriList, ",");
}
registryList = new ArrayList<String>(Arrays.asList(newAddressList.split(",")));
}
return registryList;
}
为了让服务进行访问
接着写服务了。有的单独的有的接着其他服务里面
<!-- xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.4.0</version>
</dependency>
<!-- 2.3.1 理论上xxl-job-core的版本也要是2.3.1 实测支持2.4.0 -->
<!-- 2.3.1 对应 nacos client 版本1.x -->
<!-- 2.3.1-nacos2 对应 nacos client 版本2.x -->
<dependency>
<groupId>com.justtoplay</groupId>
<artifactId>xxl-job-plus</artifactId>
<version>2.3.1-nacos2</version>
</dependency>
<!-- starter 0.2.12 对应nacos client 版本2.1.0 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>0.2.12</version>
</dependency>
spring:
application:
name: xxl-job-demo
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
auto-register: true
文档里面的demo 很简单。
发现docker 的运行的项目稳定性,比java -jar xx.jar 要运行的很稳定性很多。
xxl-job 运行到
1、同Dockerfile和idea 一起使用
先进行spring boot 打包 jar
idea 连接liunx 上,liunx 上开启docker 端口,然后从idea 运行
2、dockerfile 和 docker-compose.yml 一起使用
打好包,然后在用命令运行
docker-compose build 打包
docker-compose up -d 运行
学习时间:
- 上下班公交车上
- 晚上睡觉之前
学习产出:
- CSDN 技术博客 1篇