sendEvent
语法
sendEvent(event)
详情
sendEvent 是 CEP monitor 内部的事件控制接口,用于将一个事件插入到当前子引擎的事件输入队列的尾部。
参数
event 事件实例。
例子
定义事件:
class UpdateFactor{
sym :: STRING
factor :: DOUBLE
def UpdateFactor(code, val){
sym = code
factor = val
}
}
class MarketData{
market :: STRING
code :: STRING
price :: DOUBLE
qty :: INT
def MarketData(m,c,p,q){
market = m
code = c
price = p
qty = q
}
}
定义 monitor:
class MainMonitor : CEPMonitor{
maxPrice :: DOUBLE
def MainMonitor(){ maxPrice = 0.0 }
def updateMarketData(event)
// Monitor 启动时注册事件监听器
def onload(){
addEventListener(handler=updateMarketData, eventType='MarketData', times='all')
}
// 核心事件处理函数
def updateMarketData(event){
print("处理 MarketData: "+event.code+" 价格="+string(event.price))
if(event.price > maxPrice){
maxPrice = event.price
// emitEvent:输出到流表
emitEvent(UpdateFactor("maxPrice", maxPrice))
// routeEvent:队首插入一个警告事件,优先处理
routeEvent(UpdateFactor("alert", maxPrice))
// sendEvent:队尾插入一个信息事件,顺序处理
sendEvent(UpdateFactor("info", maxPrice))
}
}
}
创建流表接收输出事件:
share streamTable(array(STRING,0) as eventType, array(BLOB,0) as blobs) as simulateResult
serializer = streamEventSerializer(
name=`simulate,
eventSchema=[UpdateFactor],
outputTable=simulateResult
)
dummy = table(array(STRING,0) as eventType, array(BLOB,0) as blobs)
创建 CEP 引擎:
engine = createCEPEngine(
name='cep1',
monitors=<MainMonitor()>,
dummyTable=dummy,
eventSchema=[MarketData],
outputTable=serializer
)
相关函数:addEventListener, createCEPEngine, appendEvent, emitEvent, routeEvent