public MartenBackedListenerContext()
        {
            theStore = DocumentStore.For(_ =>
            {
                _.Connection(ConnectionSource.ConnectionString);
                _.PLV8Enabled = false;
                _.Storage.Add <PostgresqlEnvelopeStorage>();
            });

            theStore.Advanced.Clean.CompletelyRemoveAll();

            theStore.Schema.ApplyAllConfiguredChangesToDatabase();

            theWorkerQueue = Substitute.For <IWorkerQueue>();

            theSettings = new BusSettings();

            var tables = new EnvelopeTables(theSettings, new StoreOptions());

            var retries = new MartenRetries(theStore, tables, CompositeTransportLogger.Empty(), theSettings);


            theListener = new MartenBackedListener(
                Substitute.For <IListeningAgent>(),
                theWorkerQueue,
                theStore,
                CompositeTransportLogger.Empty(), theSettings, tables, retries);
        }
Ejemplo n.º 2
0
        public run_scheduled_job_specs()
        {
            var logger         = CompositeTransportLogger.Empty();
            var envelopeTables = new EnvelopeTables(theSettings, new StoreOptions());
            var retries        = new MartenRetries(theStore, envelopeTables, logger, theSettings);

            theScheduledJob = new RunScheduledJobs(theWorkerQueue, theStore, envelopeTables, logger, retries);
        }
Ejemplo n.º 3
0
        public RunScheduledJobs(IWorkerQueue workers, IDocumentStore store, EnvelopeTables marker, CompositeTransportLogger logger, MartenRetries retries)
        {
            _workers = workers;
            _store   = store;
            _marker  = marker;
            _logger  = logger;
            _retries = retries;

            _findReadyToExecuteJobs = $"select body from {marker.Incoming} where status = '{TransportConstants.Scheduled}' and execution_time <= :time";
            _markOwnedIncomingSql   = $"update {marker.Incoming} set owner_id = :owner, status = '{TransportConstants.Incoming}' where id = ANY(:idlist)";
        }
Ejemplo n.º 4
0
        public MartenCallbackTests()
        {
            theRuntime = JasperRuntime.For(_ =>
            {
                _.MartenConnectionStringIs(ConnectionSource.ConnectionString);

                _.ConfigureMarten(x =>
                {
                    x.Storage.Add <PostgresqlEnvelopeStorage>();
                    x.PLV8Enabled = false;
                });
            });

            theStore = theRuntime.Get <IDocumentStore>();

            theStore.Advanced.Clean.CompletelyRemoveAll();
            theStore.Schema.ApplyAllConfiguredChangesToDatabase();

            theEnvelope        = ObjectMother.Envelope();
            theEnvelope.Status = TransportConstants.Incoming;

            var marker = new EnvelopeTables(new BusSettings(), new StoreOptions());

            using (var session = theStore.OpenSession())
            {
                session.StoreIncoming(marker, theEnvelope);
                session.SaveChanges();
            }


            var logger = CompositeTransportLogger.Empty();

            theRetries = new MartenRetries(theStore, marker, logger, new BusSettings());

            theCallback = new MartenCallback(theEnvelope, Substitute.For <IWorkerQueue>(), theStore, marker, theRetries, logger);
        }
Ejemplo n.º 5
0
        public SchedulingAgent(IChannelGraph channels, IWorkerQueue workers, IDocumentStore store, BusSettings settings, CompositeTransportLogger logger, StoreOptions storeOptions, MartenRetries retries)
        {
            _channels     = channels;
            _workers      = workers;
            _store        = store;
            _settings     = settings;
            _logger       = logger;
            _storeOptions = storeOptions;

            _worker = new ActionBlock <IMessagingAction>(processAction, new ExecutionDataflowBlockOptions
            {
                MaxDegreeOfParallelism = 1
            });

            var marker = new EnvelopeTables(_settings, _storeOptions);

            _scheduledJobs    = new RunScheduledJobs(_workers, _store, marker, logger, retries);
            _incomingMessages = new RecoverIncomingMessages(_workers, _settings, marker, this, _logger);
            _outgoingMessages = new RecoverOutgoingMessages(_channels, _settings, marker, this, _logger);

            _nodeReassignment = new ReassignFromDormantNodes(marker, settings);
        }