Это мой код.SplitStream для динамического выходного ключа (Выбрать)
SplitStream<MonitoringEvent> splitStream = inputStream.split(new OutputSelector<MonitoringEvent>() {
@Override
public Iterable<String> select(MonitoringEvent me) {
List<String> ml = new ArrayList<String>();
ml.add(me.getEventType());
return ml;
}
У меня есть поток Мониторинг событий, поступающих в случайном порядке температура: 80, давление: 70, влажность: 80, температура: 30 ...
С выше коде, я разделения потока, eventType, т. е. temperatureStream, pressureStream.
Проблема заключается в том, если я знаю типСобытие, я могу выбрать его из splitStream как
splitStream.select('temperatureStream')
но типСобытия является динамичной и не предопределен.
Как применить CEP для этого динамического потока. КООС будет, как, если
temperate is > 90 for past 10 minutes ...
pressure is > 90 for past 10 minutes ...
Не идеально, но поскольку ваши типы событий являются конечными и маленькими (темп, давление, влажность ...), вы можете иметь несколько потоков, а затем выполнять специфическую обработку по этим отдельным потокам. Если eventTypes значительно возрастет, тогда да, будет сложно справиться. – Aurvoir
или разделить события заранее либо у источника/производителя, либо с помощью какой-либо ключевой маршрутизации, например, в обмене сообщениями – Aurvoir