Согласно документам (https://docs.wso2.org/display/CEP310/Clustered+Deployment), вы можете запускать Siddhi в распределенном режиме.
Насколько я понимаю, все узлы будут совместно использовать определения потоков и работать в общем контексте (потоки, запросы, события ...).
Но я не могу заставить его работать:
- Работа с версией 2.0.0-wso2v4
- Я написал простую программу, которая запускает два siddhiManager с включенной распределенной обработкой.
- Программа создает поток и запрос в siddhiManager1
- Добавляет обратный вызов потока, который распечатывает события в двух менеджерах (предыдущий поток)
- Отправить событие в siddhiManager1
- Печатает потоки в siddhiManager1 и siddhiManager2
Результат:
- Я вижу, как работает Hazelcast, каждый менеджер видит другого.
- siddhiManager1 имеет один поток, один запрос и выводит одно событие.
- у siddhiManager2 ничего нет.
Я тестировал с использованием siddhi-distribution (fat-jar), но также с использованием jar-файлов siddhi-api, siddhi-core и siddhi-query.
Siddhi-distribution fat-jar имеет внутри некоторый xml, связанный с Hazelcast, но насколько я могу видеть, эти конфигурации не загружаются, и в исходном коде (github) я не вижу ничего особенного в этих файлах (siddhiManager).
Есть идеи о том, как запустить siddhi в режиме распределенного кеширования? Что я делаю неправильно?