首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何实现天气数据的同步和使用QuartzScheduler?

上篇内容给大家讲解的是如何使用Redis提升应用的并发访问能力!本文承接上篇内容。

实现天气数据的同步

在micro-weather-redis应用的基础上,创建一个名称为micro-weather-quartz的应用,用于同步天气数据。

开发环境

为了演示本例,需要采用如下开发环境。

. JDK8。

. Gradle 4.0。

.Spring Boot Web Starter 2.0.0.M4。

Apache HttpClient 4.5.3。

Spring Boot Data Redis Starter 2.0.0.M4。

.Redis 3.2.100。

Spring Boot Quartz Starter 2.0.0.M4。

.Quartz Scheduler 2.3.0.

项目配置

Spring Boot Quartz Starter提供了Spring Boot对Quartz Scheduler的开箱即用功能。在原有的依赖的基础上,添加Spring Boot Quartz Starter的依赖。

如何使用Quartz Scheduler

使用Quartz Scheduler主要分为两个步骤,首先是创建一个任务,其次是将这个任务进行配置。

1.创建任务

在这里先不写具体的业务逻辑,只是打印一串文本“天气数据同步任务”,用于标识这个任务是否执行。

2.创建配置类

其中:

JobDetail:定义了一个特定的Job。JobDetail实例可以使用JobBuilder API轻松构建;

Trigger:定义了何时来触发一个特定的Job;

withIntervalInSeconds(2):意味着定时任务的执行频率为每2秒执行一次。

3.测试定时任务

启动应用,观察控制台的打印日志,可以看到定时任务确实是按照每2秒执行一次进行的。

定时同步天气数据

在之前的章节中,已经实现了获取天气的API,这个API接口只要传入相应城市的ID,就能获取天气的数据。

定时任务需要更新所有城市的数据,所以需要遍历所有城市的ID。

1.需要城市的信息

详细的城市列表信息,在网上也有相关的接口,比如https:/waylau.com/data/citylist.xml接口。访问该接口,能看到如下的信息。

当然,城市的数据量很大,本节不会全部列举出来。通过观察该数据,大概能理解这个XML中每个元素的含义。

.:这个元素的意义不大,只是为了表明它的子元素是一个集合。

.

由于这些城市的信息数据是不会经常变动的,因此获取这些信息没有必要经常访问这个接口。将这些数据存储在本地的XML文件中即可,这样,一方面减少调用这个服务的次数;另一方面,读取本地文件相对来说不管是从性能上还是从速度上,都比调用这个接口要快很多。

在应用的resources目录下新建一个名称为citylist.xml的XML文件,里面存储了所需的城市数据。为了简化数据量,这里只选取了广东省内的城市信息。

当然,为了节省篇幅,这里也没有把所有的城市都列举出来。有兴趣的读者可以自行查看项目源码。

2.将XML解析为Java bean

现在XML文件有了,下面需要将其转化为Java bean。

Java自带了JAXB(Java Architecture for XML Binding)工具,可以方便地用来处理XML,将其解析为Java bean。

其中,@XmlAttribute所定义的name正是映射为XML中的元素属性。

同时,还需要一个CityList来表示城市信息的集合。

3.城市数据服务接口及其实现

其实现原理是:先从放置在resources目录下的citylist.xml文件中读取内容,并转换成文本;其次,将该文本通过XmlBuilder工具类转换为Java bean。

这样,城市数据服务就完成了。

4.同步天气数据的接口

步天气数据的接口。

syncDataByCityId方法就是为了将天气信息存储于Redis中。

5.完善天气数据同步任务

天气数据同步任务逻辑非常简单,如下所示。

。获取列表遍历城市ID。

。根据城市ID获取天气,并进行存储。

完善配置

为了更加符合真实业务的需求,需要修改定时器的更新频率。

鉴于天气这种业务的特点,更新频率设置为30分钟是比较合理的。代码如下。

测试应用

在启动应用之前,需要保证Redis服务已经启动。

启动应用之后,天气数据同步任务就会自动启动,按照预先设定的频率进行天气数据的更新。

观察控制台,应该能看到如下的日志信息。当然,为了节省篇幅,这里省去了很多内容。

那么如何才能知道数据已经成功存入Redis了呢?当然,可以选择通过Redis 的命令行,使用key来验证是否存在数据。但其实还有更加直观的方式,那就是使用Redis的GUI工具。

使用 Redis Desktop Manager

Redis Desktop Manager是一款非常出色的跨平台的开源的Redis的管理工具,基于Qt5来构建。

用户可以在https://redisdesktop.com/download下载获得最新的安装包。

通过Redis Desktop Manager,就能方便地查看到存储在Reids里面的数据。

打开Redis Desktop Manager后,单击左上角的按钮来连接到Redis服务器,如图6-3所示。

如果是一个新的连接,则需要设置这个连接的名称(可以是任意字符),如图6-4所示。

成功连接后,就能通过该连接查看到Redis服务器里面的数据了,如图6-5所示。

本篇内容给大家介绍的是如何实现天气数据的同步

下篇文章给大家进行天气预报服务的实现,演示如何来将 Thymeleaf 技术框架集成到Spring Boot 项目中,;

觉得文章不错的朋友可以转发此文关注小编;

感谢大家的支持!!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201023A0IGPF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券