问题标签 [siddhi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1033 浏览

wso2 - wso2:cep:siddhi:如何使时间窗口持久化

我们目前正在测试 siddhi wso2 cep。

我们需要能够重新启动 wso2 服务器进程,而不会丢失已在窗口(例如时间窗口)中累积的数据。

有没有办法使时间窗口持久化,以便在不丢失状态的情况下重新启动服务器?

我们是否必须配置服务器以使用持久性?

还是我们只需要调整查询并使用事件表?

这是我们查询的示例:

0 投票
1 回答
352 浏览

wso2 - wso2 CEP 3.0.0:转换为双精度类型

在 WSO2 CEP 3.0.0 中。我在双重类型的属性中遇到了一些令人困惑的行为。

假设以下 siddhi 脚本:

在这个脚本中,在 DoubleStream 中插入 DoubleAttr1 是有效的,可以很好地给出一个带小数的浮点值。但是之后的过滤器引发了一个强制转换异常。

这很令人困惑,似乎 DoubleAttr1 被认为是长的?

如果我将 DoubleAttr1 计算为:

不再引发异常。我发现这种行为非常令人困惑,我认为应该在以后的版本中防止或纠正它。你有什么意见?

溴,

埃里克

PS:我也遇到了转换函数的一些舍入错误:如果 LongAttr1 = 2 和 LongAttr2 = 2,转换 (LogAttr1 / LongAttr2 *100) 给出 99.0 作为结果

0 投票
1 回答
282 浏览

wso2 - 如何使用 wso2CEP3.0.0 和 activemq 5.8.0

我正在使用 wso2cep 3.0.0 和 activemq5.8.0 根据 CEP 文档,我希望使用 CEP 发布事件。为此,我使用 2 定义QUEUES来启动 activemq,其中传入消息的名称为jmsProxy ,输出消息的名称为JmsProxy 。我在 CEP lib activemq-broker-5.8.0.jar、activemq-client-5.8.0.jar、axiom 中添加了所需的 jars .jar、geronimo-j2ee-management_1.1_spec-1.0.1.jar、geronimo-jms_1.1_spec-1.1.1.jar、hawtbuf-1.2.jar、xpp3-1.1.4c.jar、xstream-1.4.4.jar

我的配置是这样的 InputEventAdaptor

上面的传入消息将从jmsProxy队列中选择消息但它无法从 jmsProxy 队列中选择消息。我将如何启动它以将消息放入CEPoutputEventAdaptor

像这样的事件生成器配置

执行计划可以如下。like this

我在 stream-manager-config.xml 中定义了流,类似于以下内容。

当我向我的 jmsProxy 队列发送任何消息时,它看起来一切正常,消息没有反映给 CEP 事件,我在CEP中收到此消息

0 投票
0 回答
612 浏览

wso2 - Siddhi 查询语言“和”运算符

我正在测试“和”运算符的用法,并使用了文档中提到的示例:

我注意到,如果没有事件发送到 OrderStock2 流,仍然会发生匹配。

文档中“和”的定义是:两个事件以任意顺序发生。我的理解是,要发生匹配,OrderStock1 和 OrderStock2 都应该以任何顺序接收事件,然后在 StockExchangeStream 中接收到满足价格条件的 2 个事件。

即使没有事件发送到 OrderStock2 流,为什么会发生匹配的任何解释?

0 投票
1 回答
688 浏览

wso2 - 如何定义完整当天的 Siddhi 时间窗口

只为当天编写 Siddhi 时间窗口表达式的语法是什么。我只想按今天日期的任何事件属性计算事件组的数量。我打算使用 #window.time(86400000) 但假设 CEP 服务器在一天中开始,而不是这个时间段可能会进入第二天,这不符合我的要求。

0 投票
1 回答
264 浏览

wso2 - Siddhi query with snapshots and Hazelcast Error

I'm trying to create a query with snapshot output, it works fine when distributed is disabled, but fails when distributed enabled.

If i try to insert n events, it throws ArrayIndexOutOfBoundsException (n)

Any idea?

0 投票
1 回答
537 浏览

wso2 - Siddhi 分布式缓存模式部署

根据文档(https://docs.wso2.org/display/CEP310/Clustered+Deployment),您可以在分布式模式下运行 Siddhi。

据我了解,所有节点都将共享流定义并在共享上下文(流、查询、事件......)上运行。

但我不能让它发挥作用:

  1. 使用 2.0.0-wso2v4 版本
  2. 我编写了一个简单的程序,它启动了两个启用分布式处理的 siddhiManager。
  3. 该程序在 siddhiManager1 中创建一个流和一个查询
  4. 添加在两个管理器中打印事件的流回调(上一个流)
  5. 在 siddhiManager1 中发送事件
  6. 在 siddhiManager1 和 siddhiManager2 中打印流

结果是:

  • 我可以看到 Hazelcast 工作,每个经理看到另一个。
  • siddhiManager1 有一个流、一个查询并打印一个事件。
  • siddhiManager2 没有任何东西。

我已经使用 siddhi-distribution (fat-jar) 进行了测试,但也使用了 siddhi-api、siddhi-core 和 siddhi-query jars。

Siddhi-distribution fat-jar 内部有一些与 Hazelcast 相关的 xml,但据我所知,这些配置没有被加载,并且在源代码(github)中我没有看到这些文件有什么特别之处(siddhiManager)。

关于如何在分布式缓存模式部署中运行 siddhi 的任何想法?我究竟做错了什么?

0 投票
1 回答
1152 浏览

wso2 - 如何使用 siddhi 从事件流中获取最后一个事件

我有两个事件流:源和目标。

资源:

目的地:

执行计划如下:

我需要将最后一个事件从 tmpstream 传递给 sinkstream。我想我需要使用长度(1)的窗口。当我尝试事件模拟器(属性为 112233)时,我收到了接收器事件流中包含三个事件的回复:

即处理后的三个事件。

我究竟做错了什么?

预先感谢您的回复。

0 投票
1 回答
270 浏览

eclipse - 检查了 siddhi 代码,并运行 mvn eclipse:eclipse throws error at../../pom.xml

我发现像 siddhi 这样的项目不能开箱即用,这真的很奇怪,我想知道我错过了什么。

首先,我只需要将 siddhi 导入 eclipse 的方法,当我选择时它不会显示任何项目Import Existing Projects。如果我从文件系统导入,它会显示一大堆错误,我无法运行简单的东西,例如Call and Type. 真的很烂。

在我搜索的所有内容中,我安装了 maven,并尝试遵循maven eclipse 配置

当我运行时sudo mvn eclipse:eclipse,我收到以下错误

22号线有

我从 pom.xml 所在的 siddhi 文件夹运行 mvn eclipse:eclipse 。现在我在哪里可以找到../../pom.xml。这似乎是一个非常愚蠢的错误。我在这里想念什么?

0 投票
1 回答
366 浏览

wso2 - WSO2 CEP 窗口时间 1 天

我正在评估 ATM 卡交易欺诈检测的不同可能解决方案,输入负载约为每秒 50000 次,响应时间为几秒。

WSO2 CEP 看起来更适合整体解决方案,但由于我是 WSO2 CEP 的新手,所以遇到了内存和性能问题,所以请建议在 CEP WSO2/CEP 中是否有更好的方法。

为了检测欺诈,我们必须在 1 天的时间段内捕获数据聚合,这会导致内存溢出或性能下降。

1)由于CEP试图将所有记录保存在内存中一整天,导致内存不足

2) 下面导致性能下降,因为它尝试从表中加载所有记录以进行某些操作。

最糟糕的事情是我注意到 CEP 触发了,select * from instream_table而不是为 card_id 添加了 where 子句,我希望 CEP 足够智能以触发select sum(amount) from instream_table where card_id=xxxxx

我查看了 WSO2 CEP 中窗口的文档,但找不到任何优化方法,因为看起来 WSO2 CEP 尝试处理内存中的所有内容。

让我知道是否有任何解决方法或更好的解决方案来实现这一目标。我看过其他 CEP 引擎,比如 esper,但似乎每个人都在以同样的方式这样做。