1
나는 서버기존 StreamInsight 서버 프로세스에 쿼리를 바인딩 할 수 있습니까?
static void Main(string[] args)
{
// Create an embedded StreamInsight server
using (var server = Server.Create("Default"))
{
// Create a local end point for the server embedded in this program
var host = new ServiceHost(server.CreateManagementService());
host.AddServiceEndpoint(typeof(IManagementService), new WSHttpBinding(SecurityMode.Message), "http://localhost/MyStreamInsightServer");
host.Open();
/* The following entities will be defined and available in the server for other clients:
* serverApp
* serverSource
* serverSink
* serverProcess
*/
// CREATE a StreamInsight APPLICATION in the server
var myApp = server.CreateApplication("serverApp");
// DEFINE a simple SOURCE (returns a point event every second)
var mySource = myApp.DefineObservable(() => Observable.Interval(TimeSpan.FromSeconds(1))).ToPointStreamable(x => PointEvent.CreateInsert(DateTimeOffset.Now, x), AdvanceTimeSettings.StrictlyIncreasingStartTime);
// DEPLOY the source to the server for clients to use
mySource.Deploy("serverSource");
// Compose a QUERY over the source (return every even-numbered event)
var myQuery = from e in mySource
where e % 2 == 0
select e;
// DEFINE a simple observer SINK (writes the value to the server console)
var mySink = myApp.DefineObserver(() => Observer.Create<long>(x => Console.WriteLine("sink_Server..: {0}", x)));
// DEPLOY the sink to the server for clients to use
mySink.Deploy("serverSink");
// BIND the query to the sink and RUN it
using (var proc = myQuery.Bind(mySink).Run("serverProcess"))
{
// Wait for the user stops the server
Console.WriteLine("----------------------------------------------------------------");
Console.WriteLine("MyStreamInsightServer is running, press Enter to stop the server");
Console.WriteLine("----------------------------------------------------------------");
Console.WriteLine(" ");
Console.ReadLine();
}
host.Close();
}
}
그리고 StreamInsight는 A 클라이언트의 StreamInsight 한 : 나는 다른 클라이언트 B가 나는 (클라이언트 A의이 과정에 클라이언트 B의 쿼리를 결합하는 과정을 원하는
static void Main(string[] args)
{
// Connect to the StreamInsight server
using (var server = Server.Connect(new System.ServiceModel.EndpointAddress(@"http://localhost/MyStreamInsightServer")))
{
/* The following entities are expected to be defined in the server:
* serverApp0
* serverSource0
* serverSink0
*/
/* The following entity will be defined in the server by this client:
* serverProcess_Client_A
*/
// Get the existing StreamInsight APPLICATION
var myApp = server.Applications["serverApp"];
// GET the SOURCE from the server
var mySource = myApp.GetStreamable<long>("serverSource");
// Compose a QUERY on the source (return every even-numbered item + 1000)
var myQuery = from e in mySource
where e % 2 == 0
select e + 1000;
// GET the SINK from the server
var mySink = myApp.GetObserver<long>("serverSink");
// BIND the QUERY to the SINK and RUN it
using (var proc = myQuery.Bind(mySink).Run("serverProcess_Client_A"))
{
// Wait for the user to stop the program
Console.WriteLine("----------------------------------------------------------------");
Console.WriteLine("Client A is running, press Enter to exit the client");
Console.WriteLine("----------------------------------------------------------------");
Console.WriteLine(" ");
Console.ReadLine();
}
}
}
"serverProcess_Client_A")를 사용하십시오. 클라이언트 B로부터 새로운 프로세스를 생성하고 싶지 않습니다.
질문 : 할 수 있습니까?
또 다른 질문 : StreamInsight의 기존 프로세스에 쿼리를 바인딩 할 수 있습니까?