Да, можно определить только один поток и направить каждый поток с помощью фильтров Сиддхи ,
@source(type='http' , receiver.url='http://localhost:8000/SensorStream',
@map(type='json', fail.on.missing.attribute='false',
@attributes(eventType='$.event_type', type='$.json.type',deviceID='$.json.DeviceID', temperature='$.json.temperature', location='$.json.location', timestamp='$.json.timestamp' ) ) )
define stream SensorStream(eventType string, type string, deviceID string, temperature string, location string, timestamp string);
from SensorStream[eventType=='temperature']
select deviceID, temperature, timestamp
insert into TemperatureStream;
from SensorStream[eventType=='location']
select deviceID, location, timestamp
insert into LocationStream;
Как видно из приведенного выше примера, свойство карты источника 'fail.on.missing.attribute' используется, чтобы гарантировать, что различные форматы могут быть отображены в один поток вместе с настраиваемым отображением. После того, как события прибыли в конечную точку, поток делится на основе значения атрибута с использованием фильтров.