コード例 #1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddServerSentEvents();
            services
            .AddServerSentEvents <IMailboxEventService, MailboxEventService
                                  >();
            services.AddControllersWithViews();
            var conf = new ConfigurationOptions();

            conf.EndPoints.Add("localhost", 9001);
            services.AddSingleton <IMetricPayloadSerializer, MessagePackMetricPayloadSerializer>();
            services.AddSingleton <IConnectionMultiplexer>(sp =>
                                                           ConnectionMultiplexer.Connect(conf));
            services.AddSingleton <ObservableMetricSubscriber>(sp =>
                                                               new ObservableMetricSubscriber(sp.GetService <IConnectionMultiplexer>()
                                                                                              , new MessagePackMetricPayloadSerializer(), "sample"));
            services.AddSingleton <SseRedisAsyncMetricSubscriber>(sp =>
                                                                  new SseRedisAsyncMetricSubscriber(
                                                                      sp.GetService <IMailboxEventService>(),
                                                                      sp.GetService <IConnectionMultiplexer>(),
                                                                      sp.GetService <IMetricPayloadSerializer>(), "sample"));
            services.AddSingleton <IMetricMeasuringWriter>(sp =>
                                                           new MetricPublisher(sp.GetService <IConnectionMultiplexer>(),
                                                                               new MessagePackMetricPayloadSerializer(), "sample"));
            _actorSystem = ActorSystem.Create("sample", MetricMailboxConfig.Config());
        }
        public void MetricsMailbox_Records_Metrics()
        {
            var testSystem = ActorSystem.Create("test",
                                                MetricMailboxConfig.Config());

            var metricsMock = new MetricsMock();

            testSystem.RegisterMailboxMetricListener(metricsMock);
            var testActor =
                testSystem.ActorOf(Props.Create(() => new EchoActor()).WithDefaultMetricMailbox());

            testActor.Tell(new Echo());
            SpinWait.SpinUntil(() => false, TimeSpan.FromSeconds(3));
            Assert.True(metricsMock.messagesReceived > 0);
        }