public async Task Configure(MetricsConfiguration config)
        {
            try
            {
                Configuration = config;

                // TODO: figure out how to get MetricsTrackerTelemetryConsumer to get notifications

                // using grain observables
                if (Subscribers != null)
                {
                    Subscribers.Notify(o => o.Configure(config));
                }

                // using streams
                if (!string.IsNullOrWhiteSpace(Configuration.StreamingProviderName))
                {
                    try
                    {
                        StreamProvider = GrainClient.GetStreamProvider(Configuration.StreamingProviderName);

                        ClusterSnapshotStream = StreamProvider.GetStream <MetricsSnapshot>(Guid.Empty, "ClusterMetricSnapshots");
                        SiloSnapshotStream    = StreamProvider.GetStream <MetricsSnapshot>(Guid.Empty, "SiloMetricSnapshots");

                        ActivateClusterMetricsTimer();
                    }
                    catch (Exception ex)
                    {
                        // probably here because stream provider wasn't found
                        // TODO: handle better
                        logger.TrackException(ex);
                        // don't rethrow the exception
                    }
                }
                else
                {
                    if (ClusterSnapshotStream != null)
                    {
                        await ClusterSnapshotStream.OnCompletedAsync();
                    }

                    if (SiloSnapshotStream != null)
                    {
                        await SiloSnapshotStream.OnCompletedAsync();
                    }

                    ClusterSnapshotStream = null;
                    SiloSnapshotStream    = null;
                }

                logger.IncrementMetric("ClusterMetricsConfigured");
            }
            catch (Exception ex)
            {
                logger.TrackException(ex);
                throw;
            }
        }
コード例 #2
0
        public override Task OnActivateAsync()
        {
            var streamProvider = this.GetStreamProvider("SMSProvider");
            var primaryKey     = this.GetPrimaryKey();

            _deviceEventStream = streamProvider.GetStream <DeviceEvent>(primaryKey, "DeviceEvent");
            _deviceEventStream.SubscribeAsync(async(deviceEvent, token) => await this.AddEventHistory(deviceEvent));

            _deviceEventStream.OnCompletedAsync();
            return(base.OnActivateAsync());
        }
コード例 #3
0
ファイル: Stream.cs プロジェクト: zloom/Orleankka
 public Task OnCompletedAsync() => stream.OnCompletedAsync();
コード例 #4
0
 public async Task TearDown()
 {
     _tearDownExecuted = true;
     await _messageStream.OnCompletedAsync();
 }
コード例 #5
0
 public virtual Task OnCompletedAsync()
 {
     return(endpoint.OnCompletedAsync());
 }
コード例 #6
0
 public Task OnCompletedAsync()
 {
     return(_stream.OnCompletedAsync());
 }