Как получить GridStreamer на удаленном узле без настройки потоковой передачи

Можно ли в GridGain 6 получить экземпляр GridStreamer на удаленном узле и использовать его для добавления событий?

Идея в том, что мне нужна нода, которая может генерировать данные для потоковой обработки, но не участвовать в самой обработке.

Все узлы, запущенные с разделом StreamConfiguration, автоматически участвуют в обработке событий. А если нода запущена без секции StreamConfiguration — то ее Grid-экземпляр не видит других стримеров.

GridClient, похоже, не поддерживает потоковую передачу


person alkersan    schedule 20.03.2014    source источник


Ответы (1)


Вы не можете получить экземпляр стримера на узле, на котором не настроен этот конкретный стример. Однако вы можете легко выполнить свое требование, предоставив GridStreamerEventRouter, который не будет направлять события на узлы, которые не должны участвовать в обработке событий.

Например, вы можете использовать маршрутизатор случайных событий с предикатом, который будет фильтровать узлы по пользовательскому атрибуту (вы можете установить пользовательские атрибуты для узла с помощью GridConfiguration.setUserAttributes(...)):

GridStreamerConfiguration streamCfg = new GridStreamerConfiguration();
//...
streamCfg.setRouter(new GridStreamerRandomEventRouter(new GridPredicate<GridNode>() {
    @Override public boolean apply(GridNode node) {
        return !"CLIENT".equals(node.attribute("STREAMER_ROLE"));
    }
}));
person Alexey    schedule 21.03.2014
comment
Планируется ли добавить какой-либо маршрутизатор на основе ролей или маршрутизатор области узлов? Думаю подойдет для многих приложений, где данные генерируются в одних местах, а обрабатываются на других узлах (обработка логов, агрегация статистики). Также этот обходной путь ограничен RandomRouter и включает настройку с помощью кода. - person alkersan; 09.04.2014
comment
Наличие стримера, настроенного на узле, не означает, что вам нужно иметь логику обработки на том же узле — просто перенаправьте свое событие на другие узлы, которые будут его обрабатывать. Вы можете легко подключить свою собственную реализацию GridStreamerEventRouter, которая будет маршрутизировать событие в соответствии с вашими конкретными потребностями. - person Dmitriy; 06.05.2014