问题标签 [nesper]

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 回答
888 浏览

c# - 正则表达式的 NEsper 问题

我已经在这里停留了很长一段时间,并且似乎将问题归结为使用正则表达式的不正确的 NEsper 行为。我写了一个简单的项目来重现这个问题,它可以从github获得。

简而言之,NEsper 允许我通过一组规则(类似 SQL)来泵送消息(事件)。如果事件与规则匹配,NEsper 会触发警报。在我的应用程序中,我需要使用正则表达式,这似乎不起作用。

问题
我尝试了两种创建语句 createPattern的方法,createEPL它们没有触发匹配事件,但是 .NET Regex 类匹配正则表达式和输入。如果不是正则表达式 ("\b\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}\b") 我传递一个匹配值 (" 127.0.0.5") 到语句,事件成功触发。

问题
谁能帮我提供一个 NEsper 正则表达式匹配的示例?或者也许指出我在代码中的愚蠢错误。

代码
这是我的 NEsper 演示包装类

然后订阅者和一个 DummyType

和 NUnit 测试。如果有评论 nesper.AddStatementFromRegExp(regexp); 行和取消注释//nesper.AddStatementFromRegExp(input);行然后测试通过。但是我需要一个正则表达式。

0 投票
0 回答
229 浏览

esper - Esper 没有动态列表的事件

我试图找出一个基本场景来确定是否应该基于 Esper 的警报应用程序。

我有一组随时间动态变化的传感器。其中每一个都配置了一个超时,该超时定义了我应该多久收到一次传感器读数。我希望 Esper 在阅读未及时到达时通知我。

使用这种事件模式似乎可以工作,尽管一旦 Esper 启动,我就无法更改传感器集。

我怎么能做到这一点?我猜我需要将“每个 s=Sensor”部分更改为不同的东西,因为事件是不可变的。

0 投票
1 回答
259 浏览

esper - 使用自定义事件发送器与运行时发送器相比是否有优势

使用esper或者nesper我可以直接从运行时发出事件,如下所示:

或者我可以像这样使用自定义事件发送器:

我已经尝试过计时,看起来自定义事件发送器可能会更快,尽管它似乎与我所看到的并没有太大的性能差异。

是否有令人信服的理由选择一种方法而不是另一种方法?

如果我使用 custom 的第二种方法,EventSender缓存EventSender我从运行时获得的内容是否安全,这样我就不必每次都查询它?

0 投票
1 回答
94 浏览

esper - 埃斯珀生成剧集

我想使用 Esper 来生成事件集。我正在尝试检测每个时间段内机器人运动的变化,并想知道什么是最好的实施方式。

从事件中生成剧集的规则是

  • 如果一个机器人的新事件时间(例如7 秒,机器人 A)比同一机器人的最新事件(例如 3 秒,机器人 A)超过 3 秒,则新事件属于新的情节。
  • 每个episode应该只代表一个机器人(例如2sec,robotA和3sec,robotB应该输出2episode)

输入数据:

输出数据应为:


输入数据:

输出数据应为:


请帮忙提供建议。我尝试使用多个侦听器(每个机器人一个侦听器)来创建剧集并且它可以工作,但我正在尝试使用单个 EPL 语句来完成它。我已经尝试过win:time_accum(3sec) group by robot,但第二个示例输出:

由于每次事件进入时时间窗口都会发生变化,系统仍然认为事件 4 由于事件 3 小于 3 秒。如何为每个机器人创建唯一的时间窗口?


感谢您的建议,非常感谢您的任何帮助。

0 投票
2 回答
319 浏览

esper - 如何从流中删除元素

我目前有一个订单对象。我们可以假设它具有三个字段,分别称为 orderId、state 和 price。

在订单的整个生命周期中,状态和填充数量都会发生变化。每次发生字段更改时,我们通过以下方式将其推送到 esper 运行时:

现在,每次通过 SendEvent 添加订单时,它的对象都与前一个订单对象不同(即不是引用)。这意味着旧的订单对象不应再在流中供语句查看

我希望像下面这样的语句只对流中订单的最新版本进行操作,即从概念上讲,流中的每个物理订单应该只有一个订单对象。

有没有办法删除旧的 Order 对象?我可以使用引用,所以我只需更新旧的订单对象,然后再次推送它吗?有没有别的办法??

我目前正在使用Nesper

0 投票
1 回答
369 浏览

esper - 按聚合函数过滤

当字段的平均值超过阈值一分钟时,我试图引发一个事件。我将对象定义为:

我的情况定义为

然而,尽管我触发了一些心跳值超过 100 的事件,但该事件永远不会被触发。关于我做错了什么有什么建议吗?

提前致谢

0 投票
1 回答
345 浏览

batch-file - 如何基于共享属性在 Esper 中批处理事件

我正在尝试根据匹配属性(用户)将时间窗口中的一堆事件批处理在一起。例如,以下事件在 1 秒内通过 esper:

用户 | 档案
A | a1.sys
A | a2.inf
一个 | a3.sys
B | b1.sys
B | b2.sys
A | a4.sys
B | b3.inf

我想按用户批处理事件并输出以下两组事件:

输出 1
A | a1.sys
A | a2.inf
一个 | a3.sys
A | a4.sys
输出 2
B | b1.sys
B | b2.sys
B | b3.inf

关键是这些组需要作为一个集合输出,而不是每个事件一个输出。我需要模拟从以下查询中获得的响应类型(其中事件 a、b 和 c 作为集合返回):

我只是不知道如何塑造这样的查询。我已经尝试了以下方法,但它没有将事件批处理在一起。

0 投票
1 回答
189 浏览

nesper - Nesper 将事件类型添加到我的 winforms app.config

我有兴趣在我的 app.config 文件中定义多个事件类型,但默认情况下它似乎不会被加载。有什么我做错了吗?事件类型不存在于com.espertech.esper.client.Configuration.

0 投票
1 回答
92 浏览

c# - Nesper - MarketDepth.std.unique(key).win:time_batch(500 msec) 与 MarketDepth.win:time_batch(500 msec).std:unique(key) 之间的差异

在中执行以下语句有什么区别Nesper

MarketDepth.std.unique(key).win:time_batch(500 msec)对比MarketDepth.win:time_batch(500 msec).std:unique(key)

第一个是否使用唯一键批处理所有事件并每 500 毫秒调度一次?第二个批处理所有事件并每 500 毫秒分派所有唯一键?

使用命令output every 500 msec而不是使用time_batch? 任何帮助将不胜感激。

0 投票
3 回答
90 浏览

esper - Nesper 引擎总是首先尝试从 Nesper.dll 加载类型

每次我尝试向我的nesper引擎添加新类型时,我都会在 nesper 引擎中抛出以下异常。

引擎吃掉异常,然后在我的程序集中找到正确的类型,因为它遍历每个加载的程序集。

有没有办法阻止 nesper 首先在 nesper.dll 中搜索类型?