Как очистить окно CEP
Я хотел заблокировать одно и то же событие (которое имеет один и тот же заголовок), дважды входящее в поток 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 ответа
Ramindu,
К сожалению, для FirstUniqueQindow такой прямой конфигурации нет.
Это происходит потому, что вы отправляете большое количество уникальных вещей, которые не можете сохранить в памяти. Если число уникальных объектов не растет бесконечно, можно попробовать один простой способ - увеличить память JVM. Для этого откройте CEP_HOME/bin/wso2server.sh и соответственно измените аргументы памяти JVM.
Пример: -Xms2048m -Xmx4096m -XX:MaxPermSize=1024 м \
Но если вы все еще хотите очистить уникальное окно, а это значит, что вам нужно хранить только последние 1000 уникальных событий, я боюсь, что прямого пути нет. Вам нужно будет улучшить текущую реализацию [1], чтобы поддержать это. Такая функция полезна для мыши и, как правило, приветствуется!! Если вы хотите внести свой вклад, отправьте письмо на dev@wso2.org, и мы сможем продолжить обсуждение там.
В настоящее время эта функция доступна для последних уникальных событий [1]. Вы можете создать JIRA для отслеживания функции или вы можете внести свой вклад в кодовую базу [2].
[1] https://docs.wso2.com/display/SIDDHIEXTENSIONS/UniqueLength+Window
[2] https://github.com/wso2-extensions/siddhi-window-unique-length