gpt4 book ai didi

c# - StreamInsight:使用本地观察者进行远程观察

转载 作者:太空宇宙 更新时间:2023-11-03 15:52:12 26 4
gpt4 key购买 nike

我一直在玩 StreamInsight v2.3 和它提供的更新的 Rx 功能。我正在研究 SI 在事件溯源实现中的使用。我调整了一些 MSDN sample code得到以下内容:

服务器进程代码:

using (var server = Server.Create("Default"))
{
var host = new ServiceHost(server.CreateManagementService());
host.AddServiceEndpoint(typeof(IManagementService), new WSHttpBinding(SecurityMode.Message), "http://localhost/SIDemo");
host.Open();

var myApp = server.CreateApplication("SIDemoApp");
var mySource = myApp.DefineObservable(() => Observable.Interval(TimeSpan.FromSeconds(1))).ToPointStreamable(x => PointEvent.CreateInsert(DateTimeOffset.Now, x), AdvanceTimeSettings.StrictlyIncreasingStartTime);
mySource.Deploy("demoSource");

Console.WriteLine("Hit enter to stop.");
Console.ReadLine();

host.Close();
}

客户端进程代码:

using (var server = Server.Connect(new System.ServiceModel.EndpointAddress(@"http://localhost/SIDemo")))
{
var myApp = server.Applications["SIDemoApp"];
var mySource = myApp.GetObservable<long>("demoSource");

using (var mySink = mySource.Subscribe(x => Console.WriteLine("Output - {0}", x)))
{
Console.WriteLine("Hit enter to stop.");
Console.ReadLine();
}
}

尝试运行它会产生以下错误:

Reading from a remote 'System.Reactive.Linq.IQbservable`1[System.Int64]' is not supported. Use the 'Microsoft.ComplexEventProcessing.Linq.RemoteProvider.Bind' method to read from the source using a remote observer.

我开始使用的示例代码定义了一个观察者和接收器,并将其绑定(bind)到 StreamInsight 服务器中。我试图让观察者留在客户端进程中。有没有办法在客户端应用程序中为远程 StreamInsight 源设置观察者?这是否必须通过客户端观察到的服务器中的 WCF 端点之类的东西来完成?

最佳答案

实际上错误是指向解决方案。您需要“绑定(bind)”到源。

请检查以下代码段:

//Get SOURCE from server 
var serverSource = myApp.GetStreamable<long>("demoSource");

//SINK for 'demoSource'
var sinkToBind = myApp.DefineObserver<long>( ()=> Observer.Create<long>( value => Console.WriteLine( "From client : " + value)));

//BINDING
var processForSink = serverSource.Bind(sinkToBind).Run("processForSink");

另请注意,sink 将在服务器上运行,而不是像我最初猜测的那样它会在客户端上运行。如果您同时查看服务器和客户端的控制台应用程序,控制台输出将写入服务器应用程序。

即使有一种方法可以在客户端上运行接收器,我也不知道,但我也很想知道。

关于c# - StreamInsight:使用本地观察者进行远程观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25347021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com