规则引擎支持函数计算(CFC)啦
z****w · z****w 发布于2017-12-19 12:01 浏览:1927 回复:0

函数计算(cfc)是百度提供的一个类似lambda的平台,你无需维护任何服务器就可以运行自己的代码了,平台帮你维护服务器,并且自动扩容,而你只需要按执行多少付费,没调用,不产生费用。

 

规则引擎增加了一类新的目的地:函数计算。规则引擎把你的MQTT消息,作为函数的输入,调用函数并等待函数的返回,将函数返回转入另外一个MQTT主题。从此,你可以做很多以前做不到的事情了,比如对消息进行自定义处理,或者把消息转发到自己的服务器,等等。

 

举个例子,假如你的设备往云端上传的消息格式如下:

{

    "ts":1513654436,

    "data": [1,2,3]

}

并且希望把消息中的data数组写入时序数据库(TSDB)。因为规则引擎不支持data数组这种没有key的形式,因此无法直接通过规则引擎写入TSDB。因此我们需要函数计算来将数据先进行变化,将data数组转化成另外一种格式,然后再通过规则引擎写TSDB:

1,新建一个函数计算(CFC),记函数名为array_convert,代码如下:

exports.handler = (event, context, callback) => {

var data_array = [];

event.data.forEach(function(e) {

var obj = {};

obj.name = e;

data_array.push(obj);

});

event.data_array = data_array;

callback(null, event);

};

函数计算地址:https://console.bce.baidu.com/cfc/#/cfc/functions

 

2,新建规则引擎:

查询字段:*

点击添加数据目的地,选择函数计算,函数名选择array_convert,结果转入主题填例如:result_topic

image.png

 

这样,你的设备上报的数据经过规则引擎和函数计算的处理,处理后的结果转入result_topic,转化后的消息格式如下:

{

    "ts": 1513654436,

    "data": [ 1,  2,  3],

    "data_array": [

        {

            "name": 1

        },

        {

            "name": 3

        },

        {

            "name": 3

        }

    ]

}

 

后面就可以通过规则引擎,将主题result_topic中的消息的data_array数组,按照写TSDB的第二种方式把数据写入TSDB了。(

规则引擎写TSDB的4种方式:http://iot-modbus.gz.bcebos.com/tut/ruleengine2tsdb_tutorial.mp4)

 

需要说明的是:

A) 函数计算期望的输入是JSON格式的,因此你的原始消息一定是JSON的;

B) 结果转入主题可以不填,那样的话,函数计算返回的内容会被丢弃;

C) 函数计算目前还处于白名单测试阶段,需要申请才能开通,请参考文档 https://cloud.baidu.com/doc/CFC/GettingStarted.html#.9A.CE.FA.E5.FB.B0.B5.ED.90.C3.9A.75.57.24.89.BC;

D) 函数计算目前只支持北京区域


点赞  ( 0 )
收藏
评论(0)
TOP