3. 视频点播微服务
3.1 创建vod服务(需更新)
- 创建服务:zx-service-vod31
- 编写pom配置
<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>zx-parent20</artifactId><groupId>com.czxy.zx</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>zx-service-vod</artifactId><dependencies><!--web起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--nacos客户端--><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></dependency><!--nacos服务发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--mybatisplus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis.plus.version}</version></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--自定义项目--><dependency><groupId>com.czxy.zx</groupId><artifactId>zx-common31</artifactId></dependency><dependency><groupId>com.czxy.zx</groupId><artifactId>zx-domain31</artifactId></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.1</version></dependency><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-vod</artifactId><version>2.15.11</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.28</version></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20170516</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.2</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-sdk-vod-upload</artifactId><version>1.4.14</version></dependency></dependencies></project>
编写yml配置
#服务端口号server: port: 9030#服务名spring: application: name: vod-servicedatasource: driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/zx_edu_vod?useUnicode=true&characterEncoding=utf8username: rootpassword: 1234devtools: restart: enabled: true#设置开启热部署additional-paths: src/main/java#重启目录exclude: WEB-INF/**cloud:nacos:discovery:server-addr: 127.0.0.1:8848 #nacos服务地址aliyun:video:vod:keyId: LTAI4GD66m4xsD5e1Qnns9mRkeySecret: FWPFzljoLDGMiLxCE58xhLykDb3LW4regionId: cn-shanghaicategoryPageSize: 10
packagecom.czxy.zx; importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.SpringBootApplication; importorg.springframework.cloud.netflix.eureka.EnableEurekaClient; /*** @author 桐叔* @email liangtong@itcast.cn*/publicclassZxVodServiceApplication { publicstaticvoidmain(String[] args) { SpringApplication.run(ZxVodServiceApplication.class,args); } }
3.2 vod分类管理
3.2.1 前置技术:定时器 schedule
1)入门
pom文件,schedule为spring内置技术,只要保证springboot基本运行即可<dependencies><!--web起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>启动类添加注解packagecom.czxy.zx; importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.SpringBootApplication; importorg.springframework.scheduling.annotation.EnableScheduling; /*** @author 桐叔* @email liangtong@itcast.cn*/publicclassScheduleApplication { publicstaticvoidmain(String[] args) { SpringApplication.run(ScheduleApplication.class, args); } } 编写定时任务packagecom.czxy.zx.schedule; importorg.springframework.scheduling.annotation.Scheduled; importorg.springframework.stereotype.Component; /*** @author 桐叔* @email liangtong@itcast.cn*/publicclassTestSchedule { // 从0秒开始,每3秒执行一次cron="0/3 * * * * ? ") (publicvoidtestDemo() { System.out.println(System.currentTimeMillis()); } }
2)cron表达式
- cron语法:由7部分组成,第7部分为年,一般不写
秒 分 时 日 月 周 (年)
- 第4位和第6位,至少有一个?
- cron 组成取值
- , 或,例如:1,3,5 ,第1、第3、第5秒
- - 至,例如:3-5,第3、第4、第5秒
- * 任意
- / 每,
起始/间隔
,例如:0/3 从0开始,每3秒执行 - ? 不指定,因为日期和周冲突
- L 最后一个值
- W 只能在日期字段设置,表示最近的工作日。15W,例如:15是周六,周五触发。15是周日,下周一触发。15是周二,当天触发。
常见cron表达式
"30 * * * * ?" 第30秒触发任务
"30 10 * * * ?" 每小时的10分30秒触发任务
"30 10 1 * * ?" 每天1点10分30秒触发任务
"30 10 1 20 * ?" 每月20号1点10分30秒触发任务
"30 10 1 20 10 ? *" 每年10月20号1点10分30秒触发任务
"30 10 1 20 10 ? 2011" 2011年10月20号1点10分30秒触发任务
"30 10 1 ? 10 * 2011" 2011年10月每天1点10分30秒触发任务
"30 10 1 ? 10 SUN 2011" 2011年10月每周日1点10分30秒触发任务
"15,30,45 * * * * ?" 每15秒,30秒,45秒时触发任务
"15-45 * * * * ?" 15到45秒内,每秒都触发任务
"15/5 * * * * ?" 每分钟的每15秒开始触发,每隔5秒触发一次
"15-30/5 * * * * ?" 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
"0 0/3 * * * ?" 每小时的第0分0秒开始,每三分钟触发一次
"0 15 10 ? * MON-FRI" 星期一到星期五的10点15分0秒触发任务
"0 15 10 L * ?" 每个月最后一天的10点15分0秒触发任务
"0 15 10 LW * ?" 每个月最后一个工作日的10点15分0秒触发任务
"0 15 10 ? * 5L" 每个月最后一个星期四的10点15分0秒触发任务
"0 15 10 ? * 5#3" 每个月第三周的星期四的10点15分0秒触发任务
3)扩展:Quartz
- spring boot 自带的定时器简单容易
- QuartZ定时器管理灵活,可以动态配置
<!--springboot集成quartz--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>
- 学习参考