|
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
|
Übersetzung
Original
|
Verwenden des Abfragebinders
-
Vollständige Kontrolle und vollständiger Zugriff auf den StreamInsight-Server. -
Das Wiederverwenden von Abfragen durch statische oder dynamische Abfragekomposition oder das Wiederverwenden von Adaptern, Ereignistypen und Abfragevorlagen, die von einem Drittanbieter definiert wurden.
-
Der Entwickler muss alle Metadatenobjekte explizit erstellen und sie auf dem StreamInsight-Server registrieren. -
Das Modell unterstützt die Erstellung und Verwendung mehrerer Objekte (Abfragevorlagen, Abfragen, Anwendungen und Adapter). Alle Objekte müssen unter einer Anwendung registriert sein. Die Abfragevorlage und die Abfrageinstanz müssen explizit beim Server registriert werden, bevor die Abfrage ausgeführt werden kann. Die Eingabe- und Ausgabeadapter müssen explizit registriert werden, sodass die Abfragevorlage oder die Abfrage auf diese Objekte verweisen kann. Darüber hinaus müssen alle Objekte unter einer Anwendung registriert sein. Von Adaptern und Abfragevorlagen verwendete Ereignistypen werden implizit registriert.
server = Server.Create(“MyInstance”);
Application myApp = server.CreateApplication("MyApp");
InputAdapter inputAdapter = myApp.CreateInputAdapter<MyInputAdapterFactory>("DataSource", "Description of the input adapter"); OutputAdapter outputAdapter = myApp.CreateOutputAdapter<MyOutputAdapterFactory>("Output", " Description of the output adapter ");
var inputstream = CepStream<MyDataType>.Create("filterInput"); var filtered = from e in inputstream where e.Value > 95 select e; QueryTemplate filterQT = myApp.CreateQueryTemplate("filterLogic", filtered);
Der letzte Aufruf registriert die Abfragevorlage in der Anwendung. Die registrierte Abfragevorlage kann jetzt in Mehrfachbindungen wiederverwendet werden und so in mehreren Abfragen zu potenziell anderen Eingabe- und Ausgabeadaptern instanziiert werden. Diese Bindungen für registrierte Abfragevorlagen sind durch das QueryBinder-Objekt definiert:
QueryBinder queryBinder = new QueryBinder(filterQT); queryBinder.BindProducer<MyDataType>("filterInput", inputAdapter, new InputAdapterConfig { someFlag = true }, EventShape.Point); queryBinder.AddConsumer("filterOutput", outputAdapter, new OutputAdapterConfig { someString = "foo" }, EventShape.Point, StreamEventOrder.FullyOrdered); Query query = myApp.CreateQuery("filterQuery", "My Filter Query", queryBinder);
query.Start();
Abfragen mit mehreren Eingabedatenströmen
CepStream<SensorReading> sensorStream = CepStream<SensorReading>.Create("sensorInput"); CepStream<LocationData> locationStream = CepStream<LocationData>.Create("locationInput"); // Define query template in LINQ on top of sensorStream and locationStream // ... // Create query binder like in the previous example // ... InputAdapter inputAdapter = application.CreateInputAdapter<TextFileInputFactory>("CSVInput", "Reading tuples from a CSV file"); qb.BindProducer<SensorReading>("sensorInput", inputAdapter, sensorInputConf, EventShape.Interval); qb.BindProducer<LocationData>("locationInput", inputAdapter, locationInputConf, EventShape.Edge);
Ändern einer vorhandenen Anwendung
Application myApp = server.Applications["app1"]; QueryTemplate myQueryTemplate = myApp.QueryTemplates["qt1"]; InputAdapter myInputAdapter = myApp.InputAdapters["sensorAdapter5"];
Verwenden eines permanenten Metadatenspeichers
SqlCeMetadataProviderConfiguration metadataConfiguration = new SqlCeMetadataProviderConfiguration(); metadataConfiguration.DataSource = "SIMetadata.sdf"; metadataConfiguration.CreateDataSourceIfMissing = streamHostConfig.CreateDataSourceIfMissing; server = Server.Create(”MyInstance”, metadataConfiguration); Application myApp = server.CreateApplication("MyApp");
using (Server server = Server.Create("MyInstance")) { try { Application myApp = server.CreateApplication("MyApp"); InputAdapter inputAdapter = myApp.CreateInputAdapter<MyInputAdapterFactory>("DataSource", "Description of the input adapter"); OutputAdapter outputAdapter = myApp.CreateOutputAdapter<MyOutputAdapterFactory>("Output", " Description of the output adapter "); var inputstream = CepStream<MyDataType>.Create("filterInput"); var filtered = from e in inputstream where e.Value > 95 select e; QueryTemplate filterQT = myApp.CreateQueryTemplate("filterLogic", "Description of the query template", filtered); QueryBinder queryBinder = new QueryBinder(filterQT); queryBinder.BindProducer<MyDataType>("filterInput", inputAdapter, new InputAdapterConfig { someFlag = true }, EventShape.Point); queryBinder.AddConsumer("filterOutput", outputAdapter, new OutputAdapterConfig { someString = "foo" }, EventShape.Point, StreamEventOrder.FullyOrdered); Query query = myApp.CreateQuery("filterQuery", "My Filter Query", queryBinder); query.Start(); Console.ReadLine(); query.Stop(); } catch (Exception e) { Console.WriteLine(e.ToString()); } }
