protected virtual IMongoDatabase GetDatabase(string connectionStringName)
        {
            var url    = new MongoUrl(GetConnectionString(connectionStringName));
            var client = url.CreateClient(false);

            return(client.GetDatabase(url.DatabaseName));
        }
        /// <summary>
        /// Check connection and returns true if the instance of mongodb is operational.
        /// </summary>
        /// <param name="connection"></param>
        /// <returns></returns>
        public static Boolean CheckConnection(String connection)
        {
            var url    = new MongoUrl(connection);
            var client = url.CreateClient(false);

            return(CheckConnection(client));
        }
        public EventUnwinder(
            ProjectionEngineConfig config,
            IPersistence persistence,
            ILogger logger)
        {
            _config      = config;
            _persistence = persistence;
            _logger      = logger;

            var url            = new MongoUrl(_config.EventStoreConnectionString);
            var client         = url.CreateClient(false);
            var _mongoDatabase = client.GetDatabase(url.DatabaseName);

            _unwindedEventCollection = _mongoDatabase.GetCollection <UnwindedDomainEvent>("UnwindedEvents");
            _unwindedEventCollection.Indexes.CreateOne(
                Builders <UnwindedDomainEvent> .IndexKeys
                .Ascending(ude => ude.CheckpointToken)
                .Ascending(ude => ude.EventSequence)
                .Ascending(ude => ude.EventType),
                new CreateIndexOptions()
            {
                Name = "ScanPrimary"
            }
                );
        }
        public void TestFixtureSetUp()
        {
            _container = new WindsorContainer();
            _container.Kernel.ComponentRegistered += Kernel_ComponentRegistered;
            String connectionString = ConfigurationManager.ConnectionStrings["log"].ConnectionString;
            var    rebusUrl         = new MongoUrl(connectionString);
            var    rebusClient      = rebusUrl.CreateClient(false);
            var    rebusDb          = rebusClient.GetDatabase(rebusUrl.DatabaseName);

            _messages = rebusDb.GetCollection <TrackedMessageModel>("messages");
            MongoDbMessagesTracker tracker = new MongoDbMessagesTracker(rebusDb);

            JarvisRebusConfiguration configuration = new JarvisRebusConfiguration(connectionString, "test")
            {
                ErrorQueue   = "jarvistest-errors",
                InputQueue   = "jarvistest-input",
                MaxRetry     = 3,
                NumOfWorkers = 1,
                EndpointsMap = new System.Collections.Generic.Dictionary <string, string>()
                {
                    { "Jarvis.Framework.Tests", "jarvistest-input" }
                }
            };

            configuration.AssembliesWithMessages = new List <System.Reflection.Assembly>()
            {
                typeof(SampleMessage).Assembly,
            };

            JarvisTestBusBootstrapper bb = new JarvisTestBusBootstrapper(
                _container,
                configuration,
                tracker);

            TestHelper.RegisterSerializerForFlatId <SampleAggregateId>();

            bb.Start();
            var rebusConfigurer = _container.Resolve <RebusConfigurer>();

            rebusConfigurer.Start();
            _bus = _container.Resolve <IBus>();

            _handler = new SampleCommandHandler();
            _commandExecutionExceptionHelper = new JarvisDefaultCommandExecutionExceptionHelper(NullLogger.Instance, 20, 10);
            var handlerAdapter = new MessageHandlerToCommandHandlerAdapter <SampleTestCommand>(_handler, _commandExecutionExceptionHelper, tracker, _bus);

            _container.Register(
                Component
                .For <IHandleMessages <SampleTestCommand> >()
                .Instance(handlerAdapter)
                );

            var handlerAggregateAdapter = new MessageHandlerToCommandHandlerAdapter <SampleAggregateTestCommand>(_handler, _commandExecutionExceptionHelper, tracker, _bus);

            _container.Register(
                Component
                .For <IHandleMessages <SampleAggregateTestCommand> >()
                .Instance(handlerAggregateAdapter)
                );
        }
        private IMongoCollection <BsonDocument> GetMongoCommitsCollection()
        {
            var url    = new MongoUrl(_config.EventStoreConnectionString);
            var client = url.CreateClient(false);
            var db     = client.GetDatabase(url.DatabaseName);

            return(db.GetCollection <BsonDocument>(EventStoreFactory.PartitionCollectionName));
        }
        public void TestFixtureSetUp()
        {
            String connectionString = ConfigurationManager.ConnectionStrings["log"].ConnectionString;
            var    logUrl           = new MongoUrl(connectionString);
            var    logClient        = logUrl.CreateClient(false);
            var    logDb            = logClient.GetDatabase(logUrl.DatabaseName);

            sut       = new MongoDbMessagesTracker(logDb);
            _messages = logDb.GetCollection <TrackedMessageModel>("messages");
        }
Exemplo n.º 7
0
        public void TestFixtureSetUp()
        {
            _container = new WindsorContainer();
            String connectionString = ConfigurationManager.ConnectionStrings["log"].ConnectionString;
            var    logUrl           = new MongoUrl(connectionString);
            var    logClient        = logUrl.CreateClient(false);
            var    logDb            = logClient.GetDatabase(logUrl.DatabaseName);

            logDb.Drop();

            _messages = logDb.GetCollection <TrackedMessageModel>("messages");

            JarvisRebusConfiguration configuration = new JarvisRebusConfiguration(connectionString, "test")
            {
                ErrorQueue   = "jarvistest-errors",
                InputQueue   = "jarvistest-input",
                MaxRetry     = RebusMaxRetry,
                NumOfWorkers = 1,
                EndpointsMap = new System.Collections.Generic.Dictionary <string, string>()
                {
                    ["Jarvis.Framework.Tests"] = "jarvistest-input"
                }
            };

            configuration.AssembliesWithMessages = new List <System.Reflection.Assembly>()
            {
                typeof(SampleMessage).Assembly,
            };

            MongoDbMessagesTracker tracker = new MongoDbMessagesTracker(logDb);
            BusBootstrapper        bb      = CreateBusBootstrapper(tracker, configuration);

            bb.Start();
            var rebusConfigurer = _container.Resolve <RebusConfigurer>();

            rebusConfigurer.Start();

            _bus = _container.Resolve <IBus>();
            var handler = new AnotherSampleCommandHandler();

            var commandExecutionExceptionHelper = new JarvisDefaultCommandExecutionExceptionHelper(NullLogger.Instance, 20, 10);
            var handlerAdapter = new MessageHandlerToCommandHandlerAdapter <AnotherSampleTestCommand>(
                handler, commandExecutionExceptionHelper, tracker, _bus);

            _container.Register(
                Component
                .For <IHandleMessages <AnotherSampleTestCommand> >()
                .Instance(handlerAdapter)
                );
        }
Exemplo n.º 8
0
        public void TestFixtureSetUp()
        {
            String connectionString = ConfigurationManager.ConnectionStrings["log"].ConnectionString;
            var    url    = new MongoUrl(connectionString);
            var    client = url.CreateClient(false);
            var    db     = client.GetDatabase(url.DatabaseName);

            db.Drop();
            _messages = db.GetCollection <TrackedMessageModel>("messages");
            _tracker  = new MongoDbMessagesTracker(db);
            TestHelper.RegisterSerializerForFlatId <SampleAggregateId>();

            GenerateData();
        }
Exemplo n.º 9
0
        protected BusBootstrapper(
            IWindsorContainer container,
            JarvisRebusConfiguration configuration,
            IMessagesTracker messagesTracker,
            Boolean useCustomJarvisFrameworkBinder)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            if (container == null)
            {
                throw new ArgumentNullException(nameof(container));
            }

            if (messagesTracker == null)
            {
                throw new ArgumentNullException(nameof(messagesTracker));
            }

            if (configuration.AssembliesWithMessages?.Any() == false)
            {
                var message = @"Rebus configuration has no AssembliesWithMessages. It is necessary to 
at least configure one assembly with messages to be dispatched.";
                throw new InvalidOperationException(message);
            }

            _container = container;
            JarvisRebusConfiguration = configuration;
            var mongoUrl    = new MongoUrl(configuration.ConnectionString);
            var mongoClient = mongoUrl.CreateClient(false);

            _mongoDatabase = mongoClient.GetDatabase(mongoUrl.DatabaseName);
            var factory = container.Resolve <ILoggerFactory>();

            Logger = factory.Create(GetType());

            // PRXM
            JsonSerializerSettingsForRebus.ContractResolver    = new MessagesContractResolver();
            JsonSerializerSettingsForRebus.ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor;
            if (useCustomJarvisFrameworkBinder)
            {
                JsonSerializerSettingsForRebus.SerializationBinder = new JarvisFrameworkRebusSerializationBinder(factory.Create(typeof(JarvisFrameworkRebusSerializationBinder)));
            }
            _messagesTracker = messagesTracker;
            // PRXM
        }
Exemplo n.º 10
0
        private void PerformCheck()
        {
            try
            {
                var url    = new MongoUrl(_serverUrl);
                var client = url.CreateClient(false);
                client.ListDatabases();

                var state = client.Cluster.Description.State;
                if (state == MongoDB.Driver.Core.Clusters.ClusterState.Connected)
                {
                    //Connection ok, but replicaset???
                    var disconnectedNodes = client.Cluster
                                            .Description
                                            .Servers
                                            .Where(_ => _.State == MongoDB.Driver.Core.Servers.ServerState.Disconnected)
                                            .ToList();
                    if (disconnectedNodes.Count > 0)
                    {
                        _lastError = String.Format("Replica set is on but these members are down: {0}!",
                                                   String.Join(", ", disconnectedNodes.Select(_ => _.ServerId?.ToString())));
                    }
                    else
                    {
                        _lastError = null;
                    }
                }
                else
                {
                    _lastError = String.Format("Unable to connect to Mongo Db Instance {0}!", _dbDescription);
                }
            }
            catch (Exception ex)
            {
                _lastError = String.Format("Exception in connection {0}", ex.Message);
            }
        }