Spring定时任务轮询本地数据库实现过程解析
这篇文章主要介绍了Spring定时任务轮询本地数据库实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
要做的东西很莫名其妙可以说是数据互通的一个接口吧当本地有表单提交后处理一下数据发送给另一个公司的接口
在表单提交的存库的controller里直接处理数据封装并发送就完事了.
然而领导叫我写一个接口...接收数据处理并发送.到最后又改成用触发器的方式然而写触发器的并不会用它发送http请求我只能用Spring的定时任务读取数据库的更新状态并且处理数据发送到那个公司的接口里
这是httpclient的示例
复制代码
1publicclassHttpClinet{
2
3publicstaticStringdoPost(Objectobject){
4
5StringresponseJson=null;
6//获得http客户端
7CloseableHttpClienthttpClient=HttpClientBuilder.create().build();
8//创建post请求
9//处理参数
10Stringuri=null;
11try{
12uri="http://10.145.1.12:80/promo/api/approval/todoItem?sourceID=XZBZ&secretKey=OHzwIVM6";
13
14
15}catch(Exceptione){
16e.printStackTrace();
17}
18
19HttpPosthttpPost=newHttpPost(uri);
20
21
22//将对象转换成json字符串然后存入entity中请求body
23System.out.println(JSON.toJSONString(object));
24StringEntityentity=newStringEntity(JSON.toJSONString(object),"UTF-8");
25
26//将json字符串放入请求body中
27httpPost.setEntity(entity);
28
29//设置请求头
30httpPost.setHeader("Content-Type","application/json;charset=utf-8");
31
32//获取response模型
33
34CloseableHttpResponseresponse=null;
35try{
36//发送post请求后由response模型接收
37response=httpClient.execute(httpPost);
38//从响应模型中获取body
39HttpEntityresponseEntity=response.getEntity();
40
41
42responseJson=EntityUtils.toString(responseEntity);
43
44if(responseEntity!=null){
45System.out.println("相应内容为:"+responseJson);
46}
47}catch(Exceptione){
48e.printStackTrace();
49}finally{
50try{
51if(httpClient!=null){
52httpClient.close();
53}if(response!=null){
54response.close();
55}
56}catch(Exceptione){
57e.printStackTrace();
58}
59}
60returnresponseJson;
61
62}
63}
复制代码
这是定时任务(非quartz)
复制代码
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd">
复制代码
任务的具体方法
@Component publicclassSendDataTask{ @Autowired WorkFlowServiceworkFlowServiceImpl; //首次推送待审 @Scheduled(cron="0*/1***?")//间隔一分钟执行 publicvoidtaskCycle()throwsUnsupportedEncodingException{ //第一次推送任务(产生任务),产生新任务则产生审批人,还需要取消掉没有认领任务的审批人的消息 Listlist=workFlowServiceImpl.getToDoTaskInfoBySendStatus("0","100"); ToDoTaskModeltoDoTaskModel=newToDoTaskModel(); for(inti=0;i tlist=toDoTaskModel.getThisLevelInfoList(); //new一个移动端要的格式的模型 List approverList=newArrayList (); ApproverPOJOapproverPOJO=newApproverPOJO(); for(intj=0;j taskIDList=newArrayList (); taskIDList=workFlowServiceImpl.selectAllByDocID(docID); for(intj=0;j invalidList=newArrayList (); invalidList=workFlowServiceImpl.SelectInvalidApprover(); StringinvalidTaskID=null; for(intj=0;j secondList=workFlowServiceImpl.getNewStatus("1","100"); TaskStatusPOJOtaskStatusPOJO=newTaskStatusPOJO(); for(inti=0;i 其实这个东西很简单只是需求变三变从提交表单给我发数据到用触发器给我发http请求(json串自己处理数据)再到最后我只能去数据库自己查自己处理数据自己发
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。