Example #1
0
        public static ConreignSilo Create(ConreignSiloConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }
            var rootLogger = CreateLoggerConfiguration(configuration.MinimumLogLevel, configuration.LogStorageMongoDbUrl)
                             .CreateLogger()
                             .ForContext(new []
            {
                new PropertyEnricher("ApplicationId", "Conreign.Silo"),
                new PropertyEnricher("ClusterId", configuration.ClusterId),
                new PropertyEnricher("InstanceId", configuration.InstanceId)
            });
            var orleansLogger = CreateLoggerConfiguration(LogEventLevel.Warning, configuration.LogStorageMongoDbUrl)
                                .CreateLogger();
            // HACK: Side-effects here but what can I do with static classes :(
            var orleansTelemetryAndLogConsumer = new SerilogConsumer(orleansLogger);

            SiloStartup.Configuration = configuration;
            LogManager.LogConsumers.Add(orleansTelemetryAndLogConsumer);
            LogManager.TelemetryConsumers.Add(orleansTelemetryAndLogConsumer);
            Log.Logger = rootLogger;
            return(new ConreignSilo(configuration, rootLogger));
        }
Example #2
0
        static void Main(string[] args)
        {
            // First, configure and start a local silo
            var siloConfig = ClusterConfiguration.LocalhostPrimarySilo();

            siloConfig.Globals.RegisterStorageProvider <MemoryStorage>("OrleansStorage");
            siloConfig.Globals.Application.SetDefaultCollectionAgeLimit(ageLimit: TimeSpan.FromMinutes(1));

            siloConfig.Globals.Application.SetCollectionAgeLimit(type: typeof(LinkStage0Grain), ageLimit: TimeSpan.FromMinutes(1));
            siloConfig.Globals.Application.SetCollectionAgeLimit(type: typeof(LinkStage1Grain), ageLimit: TimeSpan.FromMinutes(2));
            siloConfig.Globals.Application.SetCollectionAgeLimit(type: typeof(LinkStage2Grain), ageLimit: TimeSpan.FromMinutes(3));

            var logger = new Serilog.LoggerConfiguration()
                         .WriteTo.Console()
                         .CreateLogger();
            var serilogConsumer = new SerilogConsumer(logger);

            LogManager.LogConsumers.Add(serilogConsumer);
            //LogManager.TelemetryConsumers.Add(serilogConsumer);

            var silo = new SiloHost("TestSilo", siloConfig);

            silo.InitializeOrleansSilo();
            silo.StartOrleansSilo();

            Console.WriteLine("Silo started.");

            // Then configure and connect a client.
            var clientConfig = ClientConfiguration.LocalhostSilo();
            var client       = new ClientBuilder().UseConfiguration(clientConfig).Build();

            client.Connect().Wait();

            Console.WriteLine("Client connected.");


            ////
            //// This is the place for your test code.
            ////

            //ClientCall(clientConfig, client);


            Console.WriteLine("\nPress Enter to terminate...");
            Console.ReadLine();

            // Shut down
            //client.Close();
            silo.ShutdownOrleansSilo();
        }