首页 > 解决方案 > 如何进行多个隐式流订阅?

问题描述

我尝试通过多个流命名空间使用 ImplicitStreamSubscription 但得到异常:

无法在 d03d6cb5-a003-aea5-0b51-84aa320b7d9f 上为流 test-0bc2df02-4205-4fbf-ae69-a565c26ab413-test_stream_provider 向消费者传递消息,可以重试。Orleans.Runtime.OrleansException:流类型不匹配。一个流只能支持一种类型的数据。请求的流的通用类型 (System.String) 与先前请求的类型 (Exchange.Model) 不匹配。

我的粒度由两个ImplicitStreamSubscription属性注释。

[ImplicitStreamSubscription(MessageBrokerConstants.Model)]
[ImplicitStreamSubscription(MessageBrokerConstants.TestMessage)]

OnSubscribed 实现:

public async Task OnSubscribed(IStreamSubscriptionHandleFactory handleFactory)
{
    var handle = handleFactory.Create<Model>();
    await handle.ResumeAsync((data, token) =>
    {
        Console.WriteLine(data);
        return Task.CompletedTask;
    });

    var handle2 = handleFactory.Create<string>();
    await handle2.ResumeAsync((data, token) =>
    {
        Console.WriteLine(data);
        return Task.CompletedTask;
    });
}

发生这种情况的原因是什么?

标签: orleans

解决方案


推荐阅读