许多监测系统、交易系统、实时数据挖掘分析算法是用C++写的,而且第三方接口也往往以C++动态库的方式出现。当你更偏好于使用C++编程语言的话,可以用SODBASE CEP C++ 接口来搭建流式计算系统。本文相关的软件和代码可以到http://www.sodbase.com/page/service/product.php,下载软件。里面有较为详细的介绍。
1. 只用C++
一些项目中,希望就将SODBASE CEP引擎作为一个C++的库,由C++程序来调用。可以用C++版的接口,例如下面的代码
#include <time.h>
#include <errno.h>
#include <string.h>
#include "CEPModelExecutionUtil.h"
#include "ServerManagementImpl.h"
int main(int argc,char** argv)
{
//set the CEP engine home path
GraphModelExecutionUtil_set_cep_home("./cep_home");
//run the CEP model
GraphModelExecutionUtil_runXML("files/filter6.xml");
struct timespec req, rem;
req.tv_sec = 1;
req.tv_nsec = 0;
nanosleep(&req,&rem);
//inset event to the stream
ServerManagementImpl_insertevent("filter6.input","price:20.0,name:Google,volumn:100","double,string,double");
cepengine_wait_to_close();
return 0;
}
2. Java调用C/C++库
如果用Java版的SODBASE CEP引擎或服务器,里面需要调用C++的代码或程序,linux下可以使用com.sodbase.outputadaptor.clib.linux.LinuxClibraryOutputAdaptor适配器,每个事件输出会调用动态链接库中函数。配置如下
参数1:动态库路径。可以为绝对地址。如果设置为相对地址,目前版本的LinuxClibraryOutputAdaptor会到SODBASE CEP Server的clib目录中寻找。
参数2:函数名
参数3:函数的第1个参数
参数4:函数的第2个参数
。。。函数还有参数就继续往下加
参数里面可以引用输出结果中的字段值,例如下面的?{id}
<outputAdaptors>
<isOutputAsSelection>true</isOutputAsSelection>
<outputAdaptorClassName>com.sodbase.outputadaptor.clib.linux.LinuxClibraryOutputAdaptor</outputAdaptorClassName>
<adaptorParams>sodbase_c_trade_stub.so</adaptorParams>
<adaptorParams>buy</adaptorParams>
<adaptorParams>?{id}</adaptorParams>
<adaptorParams>20</adaptorParams>
<isExternal>false</isExternal>
<queryName>filter5</queryName>
</outputAdaptors>
SODBASE CEP用于轻松、高效实施数据监测、监控类项目。EPL语法见SODSQL写法与示例。图形化建模请使用SODBASE Studio。
其它推荐文章:
SODBASE CEP学习进阶篇(三):自己写输入输出适配器