/// <summary> /// 订阅消息 /// </summary> /// <param name="streamNamespaces">(自己作为Observer)侦听的StreamNamespace</param> /// <param name="token">StreamSequenceToken</param> protected async Task SubscribeAsync(string streamNamespaces, StreamSequenceToken token = null) { IAsyncStream <TEvent> worker = ClusterClient.GetSimpleMessageStreamProvider().GetStream <TEvent>(StreamId, streamNamespaces); await SubscribeAsync(worker, token); ListenStreamWorkers[streamNamespaces] = worker; }
/// <summary> /// 发送消息 /// </summary> protected Task Send(TEvent content, string streamNamespace = Standards.UnknownValue, StreamSequenceToken token = null) { return(ClusterClient.GetSimpleMessageStreamProvider().GetStream <TEvent>(StreamId, streamNamespace).OnNextAsync(content, token)); }
/// <summary> /// 获取Orleans流提供者 /// </summary> /// <param name="clusterId">Orleans集群的唯一ID</param> /// <param name="serviceId">Orleans服务的唯一ID</param> /// <param name="connectionString">Orleans数据库连接串</param> /// <returns>流提供者</returns> public static IStreamProvider Fetch(string clusterId, string serviceId, string connectionString) { return(_cache.GetValue(String.Format("{0}*{1}", clusterId, serviceId), () => ClusterClient.Fetch(clusterId, serviceId, connectionString).GetStreamProvider(Name))); }
/// <summary> /// 获取Orleans流提供者 /// </summary> /// <returns>Orleans流提供者</returns> public static IStreamProvider Fetch() { return(ClusterClient.Fetch().GetStreamProvider(Name)); }