0

我开始潜入奥尔良溪流,但在使用 ImplicitStreamSubscription 时遇到了问题。我在QuickStart示例的基础上添加了一个实现接口和粒度的新项目。这是到目前为止我的所有代码。

[ImplicitStreamSubscription("RANDOMDATA")]
public class VSMDiscovery : Grain, IVSMDiscovery
{
    public override Task OnActivateAsync()
    {
        Console.WriteLine("Started" + this.GetPrimaryKey());

        return base.OnActivateAsync();
    }
}

public interface IVSMDiscovery : IGrainWithIntegerKey
{
}

在开发测试主程序中,我只是使用发送一个事件

 var guid = Guid.NewGuid();

 //Get one of the providers which we defined in config
 var streamProvider = Orleans.GrainClient.GetStreamProvider("SMSProvider");

 //Get the reference to a stream
 var stream = streamProvider.GetStream<int>(guid, "RANDOMDATA");

 stream.OnNextAsync(1);

一切似乎都执行得很好,实例化了一个新的grain,并调用了 OnActivateAsync 将消息写入控制台,但是我收到了这个错误。

VSM Started206d105b-d21b-496c-997a-9dac3cf370b3 扩展未安装在谷物 Draco.VSMConnection.VSMDiscovery 试图从可调用的 Orleans.Runtime.ActivationData 调用类型 Orleans.Streams.OrleansCodeGenStreamConsumerExtensionMethodInvoker 异常 = Orleans.Runtime.GrainExtensionNotInstalledException:谷物 Draco 上未安装扩展.VSMConnection.VSMDiscovery 试图从可调用的 Orleans.Runtime.ActivationData 调用类型 Orleans.Streams.OrleansCodeGenStreamConsumerExtensionMethodInvoker

[2016-03-09 05:53:41.007 GMT 14 WARNING 103405 InsideRuntimeClient 127.0.0.1:11111] 未在grain Draco.VSMConnection.VSMDiscovery 上安装扩展试图从可调用的 Orleans.Runtime.ActivationData 调用类型 Orleans.Streams.OrleansCodeGenStreamConsumerExtensionMethodInvoker 以获取消息新放置请求 S127.0.0.1:11111:195198808*cli/5853f180@9c59fabf->S127.0.0.1:11111:195198808*grn/EB2C0203/ac9d7a99@0e33939b #5: global::Orleans.Streams.IStreamConsumerExtension: )

正如我所提到的,一切似乎都运行正常,但是出现这个错误是非常令人担忧的。任何帮助将不胜感激。

4

2 回答 2

0

您需要确保在配置文件中为客户端和筒仓正确指定了“SMSProvider”流提供程序,如下所示:https ://github.com/dotnet/orleans/blob/master/test/Tester/OrleansConfigurationForStreamingUnitTests .xml#L9

于 2016-03-15T05:56:20.273 回答
0

对我来说,这是由具有隐式订阅属性的颗粒引起的,但哪个 FORGOT 订阅了 OnActiveAsync 方法中的流(这是必需的,并且在上面提到的快速入门中进行了概述)......从不清楚错误信息。希望这可以减轻其他人的痛苦。

于 2020-06-17T13:54:06.917 回答