如何清除CEP窗口

时间:2016-09-05 05:05:24

标签: wso2 complex-event-processing wso2cep

我想阻止同一事件(具有相同标题)两次输入inOrg流。所以我使用了“第一个独特的”窗口。但在某些时候,这将导致内存不足错误。如果它包含超过1000个事件,我想清理第一个唯一窗口。我怎么能这样做?

这是执行计划。

@Plan:name('ExecutionPlan')

@Import('instream:1.0.0')
define stream inOrg (meta_title string, meta_link string,     meta_description string, meta_item string);

@Export('outstream:1.0.0')
define stream out (meta_id int, meta_key string, meta_title string, meta_link string);

@From(eventtable='rdbms', datasource.name='EX_DB', table.name='table')
define table EventTypeTable (meta_id int, meta_key string);

from inOrg#window.firstUnique(meta_title)
select meta_title, meta_link, meta_description, meta_item
insert into in;

from in join EventTypeTable
select meta_id, meta_key, meta_title, meta_link , meta_description, meta_item
insert into StreamTemp;

from StreamTemp [(regex:find(str:lower(meta_key),str:lower(meta_title)) or regex:find(str:lower(meta_key),str:lower(meta_description))) ]
            select meta_id, meta_key, meta_title, meta_link
            insert into out;

2 个答案:

答案 0 :(得分:1)

Ramindu,

不幸的是,没有像FirstUniqueQindow那样的直接配置。

这种情况正在发生,因为您发送的大量独特内容无法保留在内存中。如果uniques的数量没有无限增长,你可以尝试的一个简单选择是增加JVM内存。对于那个打开的CEP_HOME / bin / wso2server.sh并相应地编辑JVM内存参数。

Ex:-Xms2048m -Xmx4096m -XX:MaxPermSize = 1024m \

但是如果你仍然想要清除独特的窗口,这意味着你只需要保留最新的1000个独特事件,恐怕没有直接的方法。您需要改进当前的实现[1]以支持它。这样的功能是老鼠拥有并且大多数人欢迎!!如果你愿意贡献发送邮件到dev@wso2.org,我们可以在那里继续讨论。

[1] https://github.com/wso2/siddhi/blob/master/modules/siddhi-core/src/main/java/org/wso2/siddhi/core/query/processor/stream/window/FirstUniqueWindowProcessor.java

答案 1 :(得分:1)

目前该功能可用于最后的独特事件[1]。您可以创建jira来跟踪该功能,也可以为代码库做出贡献[2]。

[1] https://docs.wso2.com/display/SIDDHIEXTENSIONS/UniqueLength+Window

[2] https://github.com/wso2-extensions/siddhi-window-unique-length