问题标签 [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.
esper - Esper EPL 查询 Time(t) 和 Time(t-1)
我正在尝试实现一个 EPL 查询,该查询可以获取 Time(t) 和 Time(t-1) 的平均值。
例如:
a)在前 5 秒(秒 0-5)内有 2 个事件,平均为 12
b)在接下来的 5 秒(5-10 秒)内,有 3 个事件的 avg 为 23 ,并且在捕获此信息的 EPL 查询中,我还能够从上一个时间窗口中看到 12 的 avg前 5 秒
我的想法是错开对象/查询,使最终的 epl 查询具有 Time(t) 和 Time(t-1) 的快照,如虚拟创建的对象 ScoreInfoBeforeAfter 所示。但是它不起作用。
任何想法将不胜感激。谢谢。
~~~~
method-chaining - Esper:在 EPL 查询中链接属性访问和方法调用
我目前正在努力让一些 Esper EPL 查询正常工作。查询如下所示:
当我尝试将其编译成EPLStatement
viaEPAdministrator.createEPL()
时,它会引发以下异常:
com.espertech.esper.client.EPStatementException:错误启动语句:无法按名称“a.center”加载类,请检查导入
如果我将事件类和查询修改为这样读取
它编译得很好。Esper 似乎解释a.center.distance(...)
为一个类名后跟一个静态方法调用,而它解释a.distance(...)
为对 object 的方法调用a
。
如何让 Esper 按预期解释我的原始查询(即作为属性访问,然后是方法调用)?
drools - CEP 是我需要的吗(系统状态和事件重放)
我正在寻找 CEP 引擎,但我不知道是否有任何引擎符合我的要求。我的系统必须处理多个事件数据流并生成复杂的事件,而这正是几乎所有 CEP 引擎(ESPER、Drools)都非常适合的。
我将所有原始事件存储在数据库中(它不是 CEP 部分,但我这样做)并使用规则(或连续查询或其他东西)来生成对复杂事件的自定义操作。但我的一些规则取决于过去的事件。例如:每当我的配偶回家或离开家时,我可以有一个传感器发送事件,如果我的车和我喜欢的女人的车都在房子附近,我会收到短信“危险”。
问题是,随着事件处理服务的重新启动,我丢失了有关系统状态的所有信息(我的妻子在家吗?)并且要恢复它,我需要在未知的时间段内重播事件。系统状态不仅可以依赖于原始事件,还可以依赖于复杂事件。
当我需要一些关于过去复杂事件的报告时,也会出现同样的问题。我将原始事件数据存储在数据库中,并且可以生成这些复杂事件来重播原始事件,但我不知道我必须在哪个时期重播它们。
同时很明显,对于大多数规则,可以自动找到过去要处理的事件数(或加载要处理的事件的时间段)以恢复系统状态。如果给定的行动取决于我妻子在家的存在,CEP 系统必须请求最后一次状态更改。如果请求报告复杂事件且复杂事件取决于上一期间的平均价格,则应重播该期间的所有价格变化事件。等等...
如果我错过了什么?
esper - 查询中的 Esper\Time 函数
我是使用 esper 引擎(java)的新手——我在他们的文档中没有找到以下问题的答案:
我的事件对象有 Date 成员。此 EPL 查询语言中有哪些日期函数可用于比较日期(之前、之后)以计算两个日期之间的间隔([ where d1 - d2 > 4 days] 等)
简而言之,这个查询语言的所有日期函数在哪里?
flex4 - 如何避免数据随着客户端连接数增加一倍或三倍
我正在使用 blazeDs pub/sub 方法和 flex_sdk_4.1 开发一个 flex 应用程序,该应用程序显示使用 esper 生成的实时事件的数据网格和图表。用actionscript 编写的messageHandler() 检索通过JMS 传递的事件。当我在 Tomcat 服务器中运行此应用程序时,它适用于一个连接,但是,如果我同时增加客户端连接的数量,事件会根据连接数量增加一倍或三倍。我需要显示数据而不重复。谁能帮我修复这个错误。提前致谢。以下代码是供您参考的 flex 配置文件。
消息配置.xml:
远程配置.xml:
services.config.xml:
esper - 埃斯珀 - 如何建立异议“声明工厂”?
使用 Esper 引擎 - 我发现自己编写了很多字符串 SQL,并执行了很多字符串操作来将查询插入 EPStatement 对象。
以更方便的方式构建查询的最佳实践是什么?也许不是用纯字符串而是用对象构建查询?(有人用过 EPManagedStatement 对象吗?)
java - 如何在一个单一的Epser引擎中对多个流中的事件进行排序
目前我正在使用Esper事件处理器。情况如下:
有一个服务器从客户端接收多条消息,这些消息被插入到一个流中。目前有两种类型的流,称为str1、str2,它们都包含不同的事件类型。为了对齐来自不同客户端的消息,我正在寻找一种对齐机制。
一个事件类型(type1)的包包含绝对时间信息,称为globaltime的变量。现在的挑战是对type1的不同客户端的事件进行排序,因此type2的事件可以通过来自 type1 事件顺序的信息进行排序。
我的第一个直觉是使用x秒的时间窗口并使用ORDER BY子句。但是,我如何根据type2事件的顺序对type1事件进行排序。
我希望这个解释足够清楚,可以提出一些建议或提示。
提前谢谢。
Grtz Mv2k
time-series - Esper - 子时间窗口的聚合
我有一个具有(价格、交易时间)属性的市场数据事件流。
我想为每个新的市场数据事件计算过去时间窗口的简单平均值。简单平均 = 交易价格总和 / 事件数
然而,棘手的部分是我想从当前事件时间为多个子时间窗口计算这个。所以,说 [t-0 min, t-2 min] , [t-2 min, t-4 min], [t-4 min, t-6 min], ...
将为每个新事件重新计算这些时间窗口。
现在我只使用多个流并总结 [t-0 min, t-2 min], [t-0 min, t-4 min], t-0 min, t-6 min] 的价格和事件, ...并通过减法找到他们各自的简单平均值。必须有更好的方法来做到这一点,可能只使用一个或两个流?
esper - 连接在不同 JVM 中运行的两个 Esper 实例(客户端/服务器模式?)
我有一台运行 JVM 的主机,该 JVM 运行一个 Esper 服务。我有另一台主机,我想在其中连接到在第一个 JVM 中运行的 esper 服务。
即我希望能够做这样的事情:
我无法从文档中找到执行此操作的方法,但我认为这将是一个相当普遍的要求。这种事情一般是怎么做的?
java - 无法通过 EsperIOSocketAdapter 接收事件
我正在尝试通过套接字将事件发送到 Esper 引擎并遇到了一些问题。
我已经配置了 EsperIOSocketAdapter 属性,当调用 EsperIOSocketAdapter.start() 方法时,它会启动一个新的守护线程来监听客户端,但是守护线程在套接字客户端实际尝试连接之前退出,因为父线程退出。
我的代码片段如下:
另一个疑问是在程序中没有使用我用来通过代码发送事件的 SocketAdapter
EPRuntime.sendEvent(new TestEvent(event));
在使用 SocketAdapter 时,我应该使用 sendEvent() 否则事件会自动推送到引擎中。