我开始潜入Orleans Streams并且使用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
{
}
在DevTest主页中,我只是使用
发送一个事件 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);
一切似乎执行得很好,一个新的粒子被实例化并调用OnActivateAsync将消息写入控制台,但是我得到了这个错误。
VSM Started206d105b-d21b-496c-997a-9dac3cf370b3 扩展未安装在谷物Draco.VSMConnection.VSMDiscovery试图从可调用的Orleans.Runtime.ActivationData调用类型Orleans.Streams.OrleansCodeGenStreamConsumerExtensionMethodInvoker Exception = Orleans.Runtime.GrainExtensionNotInstalledException:未在谷物上安装扩展Draco.VSMConnection.VSMDiscovery尝试从可调用的Orleans.Runtime.ActivationData
调用类型Orleans.Streams.OrleansCodeGenStreamConsumerExtensionMethodInvoker[2016-03-09 05:53:41.007 GMT 14警告103405 InsideRuntimeClient 127.0.0.1:11111]未在谷物上安装扩展Draco.VSMConnection.VSMDiscovery试图从可调用的Orleans.Runtime调用类型Orleans.Streams.OrleansCodeGenStreamConsumerExtensionMethodInvoker。消息的激活数据NewPlacement请求S127.0.0.1:11111:195198808 * cli / 5853f180 @ 9c59fabf-&gt; S127.0.0.1:11111:195198808 * grn / EB2C0203 / ac9d7a99 @ 0e33939b#5:global :: Orleans.Streams。 IStreamConsumerExtension:DeliverItem()
正如我所提到的,一切似乎都运行正常,但出现此错误非常令人担忧。任何帮助将不胜感激。
答案 0 :(得分:0)
你需要确保&#34; SMSProvider&#34;对于客户端和孤岛,在配置文件中正确指定了流提供程序,如下所示:https://github.com/dotnet/orleans/blob/master/test/Tester/OrleansConfigurationForStreamingUnitTests.xml#L9
答案 1 :(得分:0)
对我来说,这是由于具有一个具有隐式订阅属性的grain导致的,但是使用哪个FORGOT可以通过OnActiveAsync方法来订阅流(这是必需的,并且在上面提到的快速入门中对此进行了概述)...。从错误消息中根本无法清除。希望这可以减轻别人的痛苦。