问题标签 [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.
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);
行然后测试通过。但是我需要一个正则表达式。
esper - Esper 没有动态列表的事件
我试图找出一个基本场景来确定是否应该基于 Esper 的警报应用程序。
我有一组随时间动态变化的传感器。其中每一个都配置了一个超时,该超时定义了我应该多久收到一次传感器读数。我希望 Esper 在阅读未及时到达时通知我。
使用这种事件模式似乎可以工作,尽管一旦 Esper 启动,我就无法更改传感器集。
我怎么能做到这一点?我猜我需要将“每个 s=Sensor”部分更改为不同的东西,因为事件是不可变的。
esper - 使用自定义事件发送器与运行时发送器相比是否有优势
使用esper
或者nesper
我可以直接从运行时发出事件,如下所示:
或者我可以像这样使用自定义事件发送器:
我已经尝试过计时,看起来自定义事件发送器可能会更快,尽管它似乎与我所看到的并没有太大的性能差异。
是否有令人信服的理由选择一种方法而不是另一种方法?
如果我使用 custom 的第二种方法,EventSender
缓存EventSender
我从运行时获得的内容是否安全,这样我就不必每次都查询它?
esper - 埃斯珀生成剧集
我想使用 Esper 来生成事件集。我正在尝试检测每个时间段内机器人运动的变化,并想知道什么是最好的实施方式。
从事件中生成剧集的规则是
- 如果一个机器人的新事件时间(例如7 秒,机器人 A)比同一机器人的最新事件(例如 3 秒,机器人 A)超过 3 秒,则新事件属于新的情节。
- 每个episode应该只代表一个机器人(例如2sec,robotA和3sec,robotB应该输出2episode)
输入数据:
输出数据应为:
输入数据:
输出数据应为:
请帮忙提供建议。我尝试使用多个侦听器(每个机器人一个侦听器)来创建剧集并且它可以工作,但我正在尝试使用单个 EPL 语句来完成它。我已经尝试过win:time_accum(3sec) group by robot
,但第二个示例输出:
由于每次事件进入时时间窗口都会发生变化,系统仍然认为事件 4 由于事件 3 小于 3 秒。如何为每个机器人创建唯一的时间窗口?
感谢您的建议,非常感谢您的任何帮助。
esper - 如何从流中删除元素
我目前有一个订单对象。我们可以假设它具有三个字段,分别称为 orderId、state 和 price。
在订单的整个生命周期中,状态和填充数量都会发生变化。每次发生字段更改时,我们通过以下方式将其推送到 esper 运行时:
现在,每次通过 SendEvent 添加订单时,它的对象都与前一个订单对象不同(即不是引用)。这意味着旧的订单对象不应再在流中供语句查看
我希望像下面这样的语句只对流中订单的最新版本进行操作,即从概念上讲,流中的每个物理订单应该只有一个订单对象。
有没有办法删除旧的 Order 对象?我可以使用引用,所以我只需更新旧的订单对象,然后再次推送它吗?有没有别的办法??
我目前正在使用Nesper
esper - 按聚合函数过滤
当字段的平均值超过阈值一分钟时,我试图引发一个事件。我将对象定义为:
我的情况定义为
然而,尽管我触发了一些心跳值超过 100 的事件,但该事件永远不会被触发。关于我做错了什么有什么建议吗?
提前致谢
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 作为集合返回):
我只是不知道如何塑造这样的查询。我已经尝试了以下方法,但它没有将事件批处理在一起。
nesper - Nesper 将事件类型添加到我的 winforms app.config
我有兴趣在我的 app.config 文件中定义多个事件类型,但默认情况下它似乎不会被加载。有什么我做错了吗?事件类型不存在于com.espertech.esper.client.Configuration
.
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
? 任何帮助将不胜感激。
esper - Nesper 引擎总是首先尝试从 Nesper.dll 加载类型
每次我尝试向我的nesper
引擎添加新类型时,我都会在 nesper 引擎中抛出以下异常。
引擎吃掉异常,然后在我的程序集中找到正确的类型,因为它遍历每个加载的程序集。
有没有办法阻止 nesper 首先在 nesper.dll 中搜索类型?