Example #1
0
        /// <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;
        }
Example #2
0
 /// <summary>
 /// 发送消息
 /// </summary>
 protected Task Send(TEvent content, string streamNamespace = Standards.UnknownValue, StreamSequenceToken token = null)
 {
     return(ClusterClient.GetSimpleMessageStreamProvider().GetStream <TEvent>(StreamId, streamNamespace).OnNextAsync(content, token));
 }
Example #3
0
 /// <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)));
 }
Example #4
0
 /// <summary>
 /// 获取Orleans流提供者
 /// </summary>
 /// <returns>Orleans流提供者</returns>
 public static IStreamProvider Fetch()
 {
     return(ClusterClient.Fetch().GetStreamProvider(Name));
 }