Beispiel #1
0
        private static async Task MainAsync(string[] args)
        {
            //// App Metrics configuration

            // Build metrics root
            var metrics =
                new MetricsBuilder()
                .Report.ToGraphite($"net.tcp://{Program.GraphiteEndpoint}")
                .Build();

            // Build and run scheduler
            var scheduler = new AppMetricsTaskScheduler(
                TimeSpan.FromMilliseconds(Program.GraphiteUpdateIntervalMilliseconds),
                async() => { await Task.WhenAll(metrics.ReportRunner.RunAllAsync()); });

            scheduler.Start();


            //// DataStax C# Driver configuration

            Cassandra.Diagnostics.CassandraTraceSwitch.Level = TraceLevel.Warning;
            Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));

            var cluster = Cluster.Builder()
                          .AddContactPoint(Program.ContactPoint)
                          .WithSessionName(Program.SessionName)
                          .WithMetrics(
                metrics.CreateDriverMetricsProvider(),
                new DriverMetricsOptions()
                .SetEnabledNodeMetrics(NodeMetric.AllNodeMetrics)
                .SetEnabledSessionMetrics(SessionMetric.AllSessionMetrics))
                          .Build();

            var session = await cluster.ConnectAsync().ConfigureAwait(false);


            //// Run some queries to have metrics data

            var cts  = new CancellationTokenSource();
            var task = Task.Run(async() =>
            {
                while (!cts.IsCancellationRequested)
                {
                    try
                    {
                        await session.ExecuteAsync(new SimpleStatement("SELECT * FROM system.local"));
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"ERROR: {ex}");
                    }
                }
            });

            Console.WriteLine("Press enter to shutdown the session and exit.");
            Console.ReadLine();

            cts.Cancel();

            await task.ConfigureAwait(false);

            await cluster.ShutdownAsync().ConfigureAwait(false);
        }