static void Main(string[] args) { Parser.Default.ParseArguments <CommandLineOptions>(args).WithParsed(opt => { string connectionString = ConfigurationManager.AppSettings["mongodb:connection"].ToConnectionString(); var db = new MongoClient(connectionString).GetDatabase(ConfigurationManager.AppSettings["mongodb:database-name"]); var blobStorage = new GridFsStorage(connectionString, ConfigurationManager.AppSettings["mongodb:database-name"]); string elasticConnectionString = ConfigurationManager.AppSettings["ElasticSearch:ConnectionString"].ToConnectionString(); var node = new Uri(elasticConnectionString); var client = new ElasticClient(node); //Set document parsing pipeline for elasticsearch client.PutPipeline("process_blob", p => p .Description("Document attachment pipeline") .Processors(pr => pr .Attachment <object>(a => a.Field("Blob.Base64Content").TargetField("Blob.ParsedContent").IgnoreMissing()) .Remove <object>(r => r.Field("Blob.Base64Content")) )); var reindexer = new OsdrReindexer(db, client, blobStorage); Console.WriteLine($"Using MongoDB: {connectionString}"); Console.WriteLine($"Using Elasticsearch: {elasticConnectionString}"); reindexer.Reindex(opt.Entities); }); }
public bool Start(HostControl hostControl) { Log.Information($"Service {Name} v.{Version} starting..."); Log.Information($"Name: {Name}"); Log.Information($"Title: {Title}"); Log.Information($"Description: {Description}"); Log.Information($"Version: {Version}"); var builder = new ContainerBuilder(); var blobstorage = new GridFsStorage(Environment.ExpandEnvironmentVariables(ConfigurationManager.AppSettings["mongodb:connection"]), ConfigurationManager.AppSettings["mongodb:database-name"]); builder.Register(c => blobstorage).As <IBlobStorage>().SingleInstance(); var client = new MongoClient(Environment.ExpandEnvironmentVariables(ConfigurationManager.AppSettings["mongodb:connection"])); builder.Register(c => new OsdrRecordsProvider(client.GetDatabase(ConfigurationManager.AppSettings["mongodb:database-name"]), blobstorage)).As <IRecordsProvider>().SingleInstance(); builder.RegisterConsumers(Assembly.GetExecutingAssembly()); builder.Register(context => { var busControl = Bus.Factory.CreateUsingRabbitMq(cfg => { var mtSettings = ConfigurationManager.AppSettings.MassTransitSettings(); var host = cfg.Host(new Uri(Environment.ExpandEnvironmentVariables(mtSettings.ConnectionString)), h => { }); cfg.RegisterConsumer <ExportFileCommandHandler>(host, context, e => { e.PrefetchCount = mtSettings.PrefetchCount; }); cfg.UseConcurrencyLimit(mtSettings.ConcurrencyLimit); }); return(busControl); }) .SingleInstance() .As <IBusControl>() .As <IBus>(); Container = builder.Build(); var bc = Container.Resolve <IBusControl>(); bc.ConnectPublishObserver(new PublishObserver()); bc.ConnectConsumeObserver(new ConsumeObserver()); bc.Start(); if (int.TryParse(ConfigurationManager.AppSettings["HeartBeat:TcpPort"], out int port)) { Heartbeat.TcpPortListener.Start(port); } Log.Information($"Service {Name} v.{Version} started"); return(true); }