Beispiel #1
0
        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);
            });
        }
Beispiel #2
0
        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);
        }