Esper:注意,当事件数(具有特定参数)超过阈值时

时间:2011-07-29 12:35:46

标签: java esper complex-event-processing

在相当长的时间内寻找解决方案:

我有联系表格。每当有人通过它发送邮件时,都会向Esper发出ContactEvent(receiver,senderIpAddress)。现在,我希望Esper通知我,当一个特定的IP地址在10分钟内发出超过50个联系事件。

下面代码中的语法错误是由于代码简化

create window ContactWindow.win:time(10 min) as select ipAddress, mail from ContactEvent 

然后我填充它:

insert into ContactWindow select ipAddress, mail from ContactEvent";

最终,有一个像这样的事件隐藏者:

select ip, count(ip) as cnt from ContactWindow  group by ip

哪个确实有效。这并不是我想要的强硬,因为每次发出我的语句监听器,ip addresse的消息计数会发生变化。 (“IP X在过去10分钟内发送了43条消息”,“IP X在过去10分钟内发送了44条消息”,......) 我只想让一个事件告诉我“IP X在过去10分钟内超过50条消息”,另一个告诉我,现在它已经降到了那个边界以下。

有没有办法让它发挥作用?

1 个答案:

答案 0 :(得分:1)

可能会添加having clause。在你的例子中

select ip, count(ip) as cnt from ContactWindow  group by ip having count(ip)>50