实习--1--接口功能的完善

实习(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.xmlMsgTopic.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的移植,完成后去测试环境下去测试一下缓存是否能够执行


猜你喜欢

转载自blog.csdn.net/qq_34861102/article/details/80329907