`
shangboz
  • 浏览: 14341 次
文章分类
社区版块
存档分类
最新评论

CEP(siddhi)复杂事件流程引擎

阅读更多

Siddhi是一个轻量级的,简单的开源的复杂事件流程引擎。它使用类SQL的语言描述事件流任务,可以很好的支撑开发一个可扩展的,可配置的流式任务执行引擎。传统设计之中,为了支持不同的告警规则类型,我们需要编写不同的业务逻辑代码,但是使用了Siddhi之后,我们只需要配置不同的流任务Siddhiql,即可以支持不同的告警业务。

 

Why use Siddhi:

Overview

 

 1.maven依赖

<dependency>
    <groupId>org.wso2.siddhi</groupId>
    <artifactId>siddhi-core</artifactId>
    <version>4.2.0</version>
</dependency>

<dependency>
    <groupId>org.wso2.siddhi</groupId>
    <artifactId>siddhi-query-api</artifactId>
    <version>4.2.0</version>
</dependency>

<dependency>
    <groupId>org.wso2.siddhi</groupId>
    <artifactId>siddhi-query-compiler</artifactId>
    <version>4.2.0</version>
</dependency>

 2、siddhi代码执行实例

// Creating Siddhi Manager
SiddhiManager siddhiManager = new SiddhiManager();

String siddhiApp = "define stream cseEventStream (symbol string, price float, volume long); " +
        "" +
        "@info(name = 'query1') " +
        "from cseEventStream#window.length(0) " +
        "select symbol, price, avg(price) as ap, sum(price) as sp, count(price) as cp " +
        "group by symbol " +
        "output first every 4000 milliseconds "+
        "insert into outputStream;";

// Generating runtime
SiddhiAppRuntime siddhiAppRuntime = siddhiManager.createSiddhiAppRuntime(siddhiApp);
// Starting event processing
siddhiAppRuntime.start();
// Adding callback to retrieve output events from query
siddhiAppRuntime.addCallback("query1", new QueryCallback()
{
    @Override
    public void receive(long timeStamp, Event[] inEvents, Event[] removeEvents)
    {
        System.out.println("============query callback============");
        EventPrinter.print(timeStamp, inEvents, removeEvents);
        /*System.out.println(timeStamp);
        System.out.println(inEvents);*/
    }
});
siddhiAppRuntime.addCallback("cseEventStream", new StreamCallback() {
    @Override
    public void receive(Event[] events) {
        System.out.println("============input stream callback============");
        EventPrinter.print(events);
    }
});


// Retrieving InputHandler to push events into Siddhi
InputHandler inputHandler = siddhiAppRuntime.getInputHandler("cseEventStream");


int i = 1;
while (i <= 10) {
    float p = i*10;
    inputHandler.send(new Object[]{"WSO2", p, 100});
    System.out.println("\"WSO2\", " + p);
    inputHandler.send(new Object[] {"IBM", p, 100});
    System.out.println("\"IBM\", " + p);
    Thread.sleep(1000);
    i++;
}

// Shutting down the runtime
siddhiAppRuntime.shutdown();

// Shutting down Siddhi
siddhiManager.shutdown();

 

分享到:
评论

相关推荐

    论文研究-基于分布式事件分发的复杂事件处理引擎的设计与实现 .pdf

    在信息化时代,物联网(IoT)技术的快速发展带动了对大数据实时处理能力的需求,这促使了复杂事件处理(Complex Event Processing, CEP)技术的兴起。复杂事件处理是处理并分析来自不同源的实时事件流以检测其中的...

    siddhi:流处理和复杂事件处理引擎

    是云原生的流和复杂事件处理引擎,它了解流SQL查询,以便捕获来自各种数据源的事件,对其进行处理,检测复杂条件并实时将输出发布到各个端点。 Siddhi核心库包含执行Siddhi所需的基本核心库,例如 , , 和 。 总...

    esper复杂事件处理引擎参考

    在本文档中,我们将详细介绍esper复杂事件处理引擎的相关知识点。esper是一个用于复杂事件处理(Complex Event Processing, CEP)的框架,它在面向服务的架构(SOA)中扮演着不可或缺的角色。 首先,让我们了解什么是...

    drools-example 为drools 规则引擎的使用demo,包括,决策表、领域语言、CEP(复杂事件处理)等规则引擎

    为drools 规则引擎的使用demo,包括,决策表、领域语言、CEP(复杂事件处理)等规则引擎。 springboot-drools-dynamic-db 为drools 规则引擎基于数据库实现动态规则 springboot-drools-dynamic-rules 为drools ...

    复杂事件处理CEP手册

    的方式到达企业变得尤其重要,而复杂事件处理(CEP)就是这一过程的代名词。在复杂事 件处理中,数据是不断变化的,而“操作”是“静态”的。复杂事件处理具备了分析高速 数据流并鉴别重要事件的能力,虽然对这些事件...

    CEPLite:用于终端设备的轻量级 java CEP(复杂事件处理)引擎

    用于终端设备的轻量级 CEP(复杂事件处理)引擎。它特别适用于涉及处理连续事件收入并将其推送到云/服务器的物联网应用。 该项目背后的基本逻辑是,我们可以为发生的处理添加分布式特性,并在终端设备(如安卓手机/...

    【Flink篇11】Flink之CEP复杂时间处理1

    4. **模式匹配**:在定义了模式后,Flink的CEP引擎会检测事件流是否符合定义的模式。如果找到匹配的事件序列,就会触发相应的操作,例如生成警报。 5. **应用模式**:将定义好的模式应用于事件流,并定义匹配后的...

    Apache Flink CEP复杂事件处理详解及实战案例

    内容概要:本文详细介绍了Apache Flink的FlinkCEP模块,讲解了其安装配置、事件流处理基础及其应用场景,其中包括电商欺诈检测、网络监控、实时交易系统的模式匹配以及社交媒体趋势分析的具体实现。通过多个实战示例...

    esper-demo-nuclear, 简单演示Esper复杂事件处理( CEP ) 引擎的一些特性.zip

    esper-demo-nuclear, 简单演示Esper复杂事件处理( CEP ) 引擎的一些特性 corsoft-esper-demo 博客可以在以下位置提供: http://www.adrianmilne.com/complex-event-processing-made-easy/还有关于 JavaLobby: h

    siddhi-store-rdbms_wso2_siddhi_源码

    它支持复杂事件处理(CEP),允许开发者定义规则来检测和响应特定的事件模式。 2. **流处理**:流处理是一种处理持续不断的数据流的方法,数据一旦到达就被处理,而不是等待所有数据都到达后再处理。Siddhi的流处理...

    复杂事件处理的RFID引擎设计与实现

    针对这些问题,本文介绍了一种基于复杂事件处理(CEP)的RFID引擎的设计与实现方法。 #### 二、复杂事件处理概述 复杂事件处理技术是一种新兴的信息处理方式,它通过分析事件之间的关系,如成员关系、时间关系、...

    行业分类-设备装置-复杂事件处理云平台事件分析引擎容量评估的系统及方法.zip

    这需要结合业务模型、预期的事件复杂性和数据增长趋势进行。 7. **安全与隐私**:在处理和分析敏感事件时,必须确保数据的安全性和用户隐私,这通常涉及到数据加密、访问控制和合规性检查等措施。 8. **故障恢复与...

    Flink动态CEP,来自啤酒鸭

    标题中的“Flink动态CEP”指的是Apache Flink中用于处理事件流的复杂事件处理(Complex Event Processing,简称CEP)功能,而“动态”则意味着这种处理方式具有灵活性和可适应性,能够应对流数据中模式的变化。...

    CEP白皮书中文版

    Oracle Complex Event Processing (CEP) 是甲骨文公司推出的一款专为处理大量流式数据、实时响应需求和复杂事件处理而设计的Java应用服务器。CEP技术的核心目标是通过识别和响应模式,从连续的数据流中提取有价值的...

    SODBASE CEP API Example

    "SODBASE CEP API Example" 是一个针对SODBASE CEP(复杂事件处理)平台的开发实例,旨在帮助程序员理解并应用SODBASE CEP API进行事件处理和分析。SODBASE CEP是一种先进的技术,它能够实时检测、分析和响应来自多...

    CEP-Siddhi_Editor:一个GUI文本编辑器,用于在WSO2 CEP中编写Siddhi查询。 这将是一个基于Web的解决方案,允许用户编写Siddhi查询,这些查询具有代码突出显示,代码完成和显示语法错误的功能

    CEP-Siddhi_Editor 一个GUI文本编辑器,用于在WSO2 CEP中编写Siddhi查询。 这将是一个基于Web的解决方案,允许用户编写Siddhi查询,这些查询具有代码突出显示,代码完成和显示语法错误的功能。 该项目的主要目标是...

    复杂事件处理技术及其应用综述1

    复杂事件处理(Complex Event Processing, CEP)是一种用于检测和解析实时数据流中模式的技术,它旨在从大量快速流动的事件中识别出具有重要意义的复杂事件。随着信息化的发展,企业对于及时响应业务变化和捕捉市场...

    新一代分布式的复杂事件处理系统解决方案.pdf

    复杂事件处理(Complex Event Processing, CEP)是指对海量、实时、多来源的事件流进行持续监测、关联分析,并快速做出响应处理的技术。该技术通过定义复杂的规则来实现对事件的动态识别、过滤、关联、聚合等处理,...

Global site tag (gtag.js) - Google Analytics