实习(1):接口功能的完善:
昨天之前写好了一个从其他接口调用数据,通过解析,存储并且更新本地数据库,并通过定时任务刷新到 redis
中的任务。今天着手开始写一个对外接口
定时任务刷新到 redis
中的任务:
昨天仅仅是将更新到数据库中的任务加入到定时任务中然后设置了
redis
的开启和关闭后就以为完成了这一部分任务的编写,但是今天在编写对外接口的时候才发现需要调用redis
中存储文本的key
,因此这边缓存到redis
的任务没有完成:需要新增一个过程:认真研读代码之后:发现其中是一个从数据库中读取数据并刷新到
redis
的过程:为此新增一个函数用于实现这一部分代码于是开始在之前对外的
rpc
模块中的Impl
类中实现上面功能的一个方法,该Impl
类实现的是对外接口数据的解析同时更新到数据库中。在写完该方法后之后尝试添加公司中自带的
redis
的调用对象(可以通过@Resource
的方法得到对象)的时候失败。发现之前这个Impl
类在整个项目的rpc
的模块中,而能对redis
调用对象的调用只有service
这一个模块才可以:因此再写一套接口以及实现方法在service
模块中用来刷新到redis
当中。在新的方法里面实现缓存的刷新其实比较容易,但是又会发现一个问题:之前写
Dao
组件的查询方法里面一次性都进行查询,而这里很明显需要用到多线程,因此这里在Dao
组件中新增了两个方法:查询所有有效对象数目和根据起始和终止行查询信息的函数,通过新定义一个线程类完成。线程类实现:比如1000个数据用10个线程完成,在每个线程中得到100个对象用于存储到
redis
当中,因此这个类中需要实现对一个对象数组插入redis
的操作晚上的时候改了一下需求:因为考虑到外部接口访问的频率比较慢,为了保证安全性,这里从
DataBase
刷新到redis
的过程不使用线程池,换成MQ
的使用原因在于:
MQ
长期没有被消费的时候是会有报警的使用
MQ
:开始先到spring-config-jmq.xml
和MsgTopic.java
中进行相关注册。在进行设置的时候需要新生成一个Consumer
的类扫描二维码关注公众号,回复: 2644059 查看本文章- 在类中,根据传递得到的信息判断进行缓存信息的更新。(在操作过程中又发现了之前的
RPC
)
基于上一个任务的对外接口:
熟悉了项目之后,感觉对于这个项目的编写就相对简单:
一开始运行报错:
Injection of autowired dependencies failed
。这个时候就是很麻烦的找错的过程,直接解决方法:之前maven
添加包的过程中加了development
模式,但是没有在Tomcat
的运行过程中增加development
模式,增加-Xmx512M -XX:PermSize=256M -XX:MaxPermSize=256m -Dseller.profiles.active=development
即可然后运行到300+行的时候会发现运行变得异常地卡顿,于是就要问了旁边的哥们,才发现这里有一个定时任务是从一开始就开始运行:注释到相关注解即可
关于实现:在一个
provide
中调用server
即可,中间会掺杂实体类的实现等,provide
注册后对外提供接口
收货和感悟:
过来实习一周了,感觉收获还是有的,慢慢摸清楚了一个项目的项目流程。第一次使用线程池进行操作(虽然后来又进行了修改),第一次使用MQ
进行消息的处理,明天写一下地址之间的转换处理和外部ID
的移植,完成后去测试环境下去测试一下缓存是否能够执行