问题标签 [esper]
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.
java - 从 Esper + 套接字开始
我是 Esper 的新手,我想得到一些帮助。我已经设法将 Esper 与 CSV 文件一起使用,但现在我需要使用 Java 对象作为通过套接字发送的事件,而且我在 Internet 上找不到简单的示例来用作指南。
有没有人基于它们的一些简单的例子?
无论如何,我把我正在努力工作的代码放在这里。当我运行它时没有任何反应,似乎套接字连接不起作用。
服务器类(它还包含事件类)。应该发送事件:
还有基于 Esper 的课程。
如果有人需要一些时间来帮助我,请提前非常感谢。
esper - Esper - 使用后跟模式处理随机事件序列 -->
我们有两种类型的事件 - InventoryEvent(Order) 和 InventoryEvent(Cancel)。我想在 6 秒内跟踪没有取消事件的订单事件。这是正在使用的查询
时间间隔为 6 秒,订单事件和取消事件由一个公共消息键(订单 ID)连接
这在大多数情况下都非常有效,如下所示
- 订单事件(id1) --> 取消事件(id1) >6 秒
- 订单事件(id1) --> 取消事件(id1) <6 秒
- Order Events(id1) not --> Cancel Event in 6 secs
- 多个订单事件后跟取消事件
现在我们遇到了无法保证 order 和 cancel 事件发生的顺序的情况。所以我们有一个案例
- OE(id1) -->( 6secs ) OE(id2) -->(6secs) CE(id1) -->(6secs) CE(id2)。
基本上是两个订单事件,然后是两个取消事件,间隔为 6 秒。这也有效。现在我们将二阶事件的时间改为 4 秒而不是 6 秒,
- OE(id1) -->( 4secs ) OE(id2) -->(6secs) CE(id1) -->(6secs) CE(id2)。
对于二阶事件,它不会失败。不确定我们在查询方面缺少什么。
有谁知道为什么?
java - Esper - 如果数据窗口中不存在基本事件,则捕获增量事件
假设我有一个命名窗口:
其中TestEvent
是 RevisionEvent,TestEventBase
和TestEventDelta
分别在 的基础和增量事件中定义TestEvent
。这里的关键是FieldA
。
目前,如果窗口中存在没有基本事件的增量事件,Esper 似乎会默默地丢弃此增量事件。因此,例如,如果 delta 事件出现在基本事件之前,则窗口中行的状态将看起来只是基本事件,因为 delta 被丢弃。
我的问题是,如果增量事件未能进入窗口,是否有办法捕捉它,例如,在发生这种情况时进行特殊处理?
如果我的应用程序要求我不丢失消息,并且 Esper 默默地丢弃了一些消息而不是其他消息,那么我如何 100% 确定某个事件进入了窗口?
提前感谢您的任何帮助!
esper - Esper EPL leftouter join 转发到其他流
我已经为我的 CEP 应用需求实施了 ESPER。在使用 EPL 时,我遇到了一个特定的场景,如下所示:
我将两个事件与左外连接结合起来,以确保第一个事件中的每个事件都可以触发语句,并且只有包含特定属性的第二个流中的事件才能出现。我创建了一个视图来存储基于某些字段的唯一数据。我的 EPL 是
我在配置文件中使用 java.util.Map 类型作为 CombinedEvent 数据类型
现在考虑测试场景
- 已将两个 Id 不同但名称相同的 T1 类型事件输入系统
- 一个 T2 类型的事件进入系统
由于视图规范,T1 类型的两个事件都驻留在视图中,并且当 T2 类型的事件进入系统时,Event Bean 类型的 NewData 参数包含 T1 的两个事件(如果我在代码中使用事件侦听器),但作为第一个 EPL 语句指定它插入到第二个语句中,它发现类型不匹配的错误,因为它期待“StmtGroupingEvent”的类型为 T2 的事件,但找到了事件 Bean。
所以我需要在 EPL 中处理数组类型的数据,这很麻烦。
另一方面,如果场景如下:
- 只有一个 T1 类型的事件进入系统。
- 一个 T2 类型的事件进入系统。
此方案不会产生任何错误,因为事件 Bean 已成功类型转换为 T2 类型。
所以请建议我这样做的任何替代方式。
谢谢
esper - esper 控制事件计数
我使用 esper 加入流如下:
现在考虑一个场景:
1. 两笔交易进入系统
2. 价格到达
在这种情况下,分组流将生成两个输出,每个输出用于一笔交易。这也会从最终输出中触发两个事件。随着事件数量的增加,输出事件的数量也将增加。
现在,如果将
Id - 03
Symbol - GOOG
Quantity - 300
的交易输入到系统中,它还将触发 3 个新事件,因为每个 Id 的 %ageMV 也会发生变化。随着事件数量的增加,在 UI 上处理变得困难。
所以我的问题是 -
有没有标准的方法来做到这一点?
rule-engine - 自定义规则引擎中的 esper
我需要使用 ESPER实现一个规则引擎
为此我必须准备查询规则(如果有任何其他优化方式,请提出建议)。规则在运行时必须是可声明的和可修改的。
此外,我将不得不创建一个 UI 来定义规则。
请建议任何更好和优化的方法。
一个例子:
可以在运行时定义更多的规则。
java - 另一个 epl 文件中的 Esper 表达式
如何在其他 EPL 文件中分发表达式?
我试过了,但有两个问题需要看。
1. 任何 EPL 文件不能只包含“表达式”。(“意外结束”错误)
2. 访问另一个 EPL 文件中定义的表达式,给出“未找到”错误。
这是我的尝试:
//epl1.epl
//epl2.epl
我正在使用netbeans。
如果我知道如何在 epl 中创建单行函数
也会很有用?
java - Esper窗口使用:基于事件离开窗口的重新计算
我需要有点像这样。
现在从 w1 命名窗口插入另一个事件
但有些第三事件无法自动触发派生事件重新计算。
第 4 个事件的到来触发并根据需要提供输出。
有什么标准的做法吗?
我想计算新事件是进入窗口还是离开窗口的总和。
java - 使用 EPL 跟踪一系列事件
我正在编写一个基于 Java 的 Web 服务器监控应用程序,它应该能够检测用户何时在特定时间范围内以特定顺序浏览给定的一组页面。为此,我正在使用Esper 库。我对查询的最佳表述有一些疑问。
我首先声明了一个“访问”对象,用于存储到达我的 Web 服务器的 HTTP 请求的所有信息。每当向服务器发出新请求时,都会实例化一个新的 Access 对象并将其作为事件发送到 EPL 处理核心。
假设我想跟踪浏览页面 A、页面 B 和页面 C 的所有用户。处理这种情况的最佳方法是什么?我是否需要执行多个连接,每个转换一个,如下例所示?
esper - 权限处理的 Esper 上下文使用
我想在 EPL 查询中为不同用户设置查看权限,如下所示:
我认为上下文会做到这一点,但需要一些帮助来简化事件流和配置上下文。
所以我需要在视图组的基础上创建上下文分区。如
这样所有的计算都可以在它们的基础上进行。如您所见,上下文的分区键不是单属性或双属性,它基本上是一组相同的属性。所以我不能写成