天气实时数据集成实战-ROMA篇
场景描述:国家气象数据是每个小时更新一次,通过订阅国家气象局提供的气象数据,组装成所需数据,持久化到FI MPPDB中,再通过对外开放数据API的方式,为上层应用提供气象信息。
如下图所示:
开发步骤:
1、新建一个应用,单独作为气象数据获取持久化使用;
2、切换到这个新建应用下,开发一个topic,并发布和授权给当前创建的这个应用;
3、购买数据国家气象数据平台根据需求组装气象数据并推送到MQS
(1)在livedata中开发函数API,注意是一个GET请求;
需要传入的参数可以设置为默认值
函数脚本如下:
importClass(com.huawei.livedata.lambdaservice.livedataprovider.HttpClient);
importClass(com.huawei.livedata.util.MQSUtils);
function excute(data) {
var httpExecutor = new HttpClient();
var obj = JSON.parse(data);
var host = 'api.data.cma.cn:8090';
var headers = {
};
var date=new Date();
var nowYear=date.getFullYear().toString()
var nowMonth=(date.getMonth()+1).toString()
var nowDay=(date.getDate()-1).toString();
var nowHours= date.getHours().toString();
function timeAdd0(str) {
if(str.length<=1){
str='0'+str;
}
return str
}
nowYear=timeAdd0(nowYear)
nowMonth=timeAdd0(nowMonth)
nowDay=timeAdd0(nowDay)
nowHours=timeAdd0(nowHours)
var D = nowYear+nowMonth+nowDay+nowHours+ '00' + '00'
var timeRangen = '[' + D + ',' + D +']'
var params = {
'userId' :obj.param.userId,
'pwd' : obj.param.pwd,
'dataFormat':'json',
'interfaceId':'getSurfEleByTimeRangeAndStaID',
'timeRange':timeRangen,
'staIDs':obj.param.staIDs,
'elements':'Station_Id_C,TEM,TEM_Max,TEM_Min,windpower,WEP_Now,Year,Mon,Day,Hour',
'dataCode':'SURF_CHN_MUL_HOR'
};
var res = httpExecutor.callGETAPI(host,'/api',JSON.stringify(params),JSON.stringify(headers));
res1 = JSON.parse(res);
var body = {}
body.body = res1.DS;
var utils = new MQSUtils();
var result = utils.sendMsg('192.168.9.30:9776;192.168.9.96:9776','zhuming.test.new','a06EjC0qVJ3663whERJFOg==','T_zhuming_new_test',JSON.stringify(body));
return result;
}
(2)开发完成后测试部署该API,在API授权页面,将该API授权给当前应用;
(3)将该API设置成定时调度,每小时请求一次数据,需要设置Parameter;
(4)启动该定时任务;
4、进入MQS查看消息是否入了队列;
5、配置FDI数据源和任务,将数据同步到;
(1) 配置数据源:MQS 和 MPPDB
(2) 配置同步任务;
(3) 启动同步任务;
6、开发数据API,从数据库中获取天气数据;
(1) 在livedata中接入高斯DB数据源;
(2) 开发数据API,需要用户查询时带入查询年月日和气象观察站的ID;
(3) 部署并授权(同函数API)
- 点赞
- 收藏
- 关注作者
评论(0)