0

找了很长时间的解决方案:

我有一个联系表格。每次有人通过它发送邮件时,都会向 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 地址的消息计数都会发生变化。(“IP X 在过去 10 分钟发送了 43 条消息”,“IP X 在过去 10 分钟发送了 44 条消息”,...)我只想得到一个事件告诉我“IP X 超过 50 条消息在最后 10 分钟”,另一个告诉我,它现在已经下降到该边界以下。

有没有办法让它工作?

4

1 回答 1

1

也许添加一个有子句。在你的例子中

select ip, count(ip) as cnt from ContactWindow  group by ip having count(ip)>50
于 2011-09-19T20:54:37.920 回答