问题标签 [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.

0 投票
1 回答
2448 浏览

architecture - 处理复杂事件

我的系统中有一系列离散事件,我需要根据每个事件的内容应用规则。另外,我想对这些流事件应用复杂的事件处理。

约束 1. 这些规则是用户提供的,并且会动态变化。2. 我不想在应用规则时重新启动系统。3. HA 4. 只有成熟的开源解决方案

可能的方法.. 1. 在风暴螺栓内运行 Esper CEP
2. 在风暴螺栓内运行流口水

  • 这会做单事件规则处理以及复杂事件吗?规则更改会要求我的风暴重启吗?

  • 我可以动态地将规则插入到风暴螺栓中吗?

其他解决方案?火花?

0 投票
1 回答
38 浏览

io - EsperIOSocketAdapter 绑定到特定的网络适配器

我是 Esper 的新手,有兴趣使用它通过网络发送事件数据,因此对EsperIOSocketAdapter感兴趣

看来 SocketAdapter 只能绑定到一个特定的端口,如果只有一个网络适配器就可以了,但是是否可以通过指定其 IP 地址来配置 SocketAdapter 以绑定到特定的网络适配器?

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 投票
1 回答
480 浏览

esper - Esper 与上一个事件比较

我是 Esper 的新手,所以我无法解决一个简单的问题。我所要做的就是获得当前收盘价与上一个收盘价的差值。在 esper 中解决这个问题的最聪明的方法是什么?

结果 = CurrentBar.Close - PreviousBar.Close。

编辑

我正在使用以下代码,这行得通吗?

0 投票
2 回答
404 浏览

rabbitmq - 埃斯珀不接受后期的新陈述

正如标题所说,我们在使用 Esper 和 RabbitMQ 构建项目时遇到了问题。因此我们需要使用 Esperio(4.10 版)的 amqp 适配器。

我们从手册中的基础开始,但由于某种原因,我们的查询没有得到应有的评估。我们已经发现需要在 amqp 适配器的声明中切换“EventBusSink”和 EventBusSource(构建错误,例如“未定义输出流”)

我们使用 Spring AMQP 在 Rabbitmq 中设置了 2 个队列,如下所示:

并像这样配置 Esper 和 amqp 适配器:

当我们在一个方法(构造函数或初始化方法)中设置配置和发布多个语句时,一切正常。但是,当我们第一次使用自定义配置(使用适配器)启动 esper 并在稍后阶段发布语句(并随后发送事件以匹配这些语句)时,没有任何内容与我们的语句匹配。尽管如此,我们使用相同的 esperProvider(我们代码中的 epService)。当我们在发布语句的方法中复制配置部分时,我们会得到一个异常,指出适配器已经存在。

一个查询的例子是:

发送的事件:

Esper 在运行时发布语句是否有任何限制?

谢谢!

亚娜

0 投票
2 回答
410 浏览

java - Esper 警报查询未触发

我正在使用 Esper 根据被触发的 esper 查询生成警报消息。

我使用 Map 作为 java 对象来绑定所有日志消息,并在外部 esper config xml 文件中定义如下。

我正在从队列中读取日志消息。我对事件获取触发器的要求如下 1. 如果类型 = "b2c_access" 的日志消息中的响应字段为 = 302,并且 1 分钟内具有此响应代码的日志消息计数 > 10,则触发事件。

我有以下 EPL

但是,即使日志消息包含超过 10 条消息,时间跨度为 2 分钟,事件也不会被触发,也不会出现任何异常。所以我试图使EPL简单如下。

上面的查询仍然没有被解雇。

我无法在 Esper 官方网站上找到任何与我正在寻找的匹配的示例。

0 投票
1 回答
498 浏览

oracle - CEP --- is there a big difference between Oracle EPL and what is offered by ESPER?

I'm new to CEP and looking into playing with ESPER. I was doing some general googling on the topic and came a cross this:

http://docs.oracle.com/cd/E13157_01/wlevs/docs30/pdf/epl_guide.pdf

And also this:

http://esper.codehaus.org/esper-4.2.0/doc/reference/en/html/

Can someone clarify what is the difference? I started reading the Oracle one because it had pictures... :) But I don't have Oracle $, so likely will be using ESPER.

So are there significant differences or are they more or less the same thing, as far as "EPL" goes, with minor differences like Oracle vs MS "sql"... (Don't get attached to this last statement, just using it as a euphemism of sorts.)

0 投票
2 回答
319 浏览

esper - 如何从流中删除元素

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

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

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

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

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

我目前正在使用Nesper

0 投票
1 回答
424 浏览

java - EPL Esper 从 java Set 中选择

我正在为 EPL Esper 编写选择查询,我需要根据存储在 java 集中的对象的信息添加 where 子句。

我需要比较 prop2 的值,但我得到了 myClass 的实例,如何获取 prop2 的值?

0 投票
1 回答
423 浏览

esper - 检测 esper 中的缺失事件

我有一种情况,我想检测源何时超过 24 小时没有向系统发送事件。当这种模式被识别时,我希望能够检索源发送的最后一个已知事件(可能是几天)。我希望每 24 小时进行一次检查。我遵循了“ATM”类型的示例,并提出了以下内容,非常简单。

从模式中选择 a.value[每(时间:间隔(24 小时)而不是 a=事件)

当 24 小时过去且没有事件 a 时,这会通知我的更新侦听器。但是我如何获得以前的知识?我考虑过使用 prev 或 std:lastevent 函数,但我需要一个数据窗口可供选择,不知道该放在哪里。

谢谢