コード例 #1
0
ファイル: MessagingRoot.cs プロジェクト: SVemulapalli/jasper
        public MessagingRoot(MessagingSerializationGraph serialization,
                             JasperOptions settings,
                             HandlerGraph handlers,
                             IDurableMessagingFactory factory,
                             ISubscriberGraph subscribers,
                             IMessageLogger messageLogger,
                             IContainer container,
                             ITransportLogger transportLogger)
        {
            Settings         = settings;
            _handlers        = handlers;
            _transportLogger = transportLogger;
            Factory          = factory;
            Subscribers      = subscribers;
            Transports       = container.QuickBuildAll <ITransport>().ToArray();


            Serialization = serialization;

            Logger = messageLogger;

            Pipeline = new HandlerPipeline(Serialization, handlers, Logger,
                                           container.QuickBuildAll <IMissingHandler>(),
                                           this);

            Workers = new WorkerQueue(Logger, Pipeline, settings);

            Router = new MessageRouter(this, handlers);

            // TODO -- ZOMG this is horrible, and I admit it.
            if (Factory is NulloDurableMessagingFactory f)
            {
                f.ScheduledJobs = ScheduledJobs;
            }
        }
コード例 #2
0
        public MessagingRoot(MessagingSerializationGraph serialization,
                             JasperOptions options,
                             HandlerGraph handlers,
                             ISubscriberGraph subscribers,
                             IMessageLogger messageLogger,
                             IContainer container,
                             ITransportLogger transportLogger
                             )
        {
            Options          = options;
            Handlers         = handlers;
            _transportLogger = transportLogger;
            Subscribers      = subscribers;
            Transports       = container.QuickBuildAll <ITransport>().ToArray();


            Serialization = serialization;

            Logger = messageLogger;

            Pipeline = new HandlerPipeline(Serialization, handlers, Logger,
                                           container.QuickBuildAll <IMissingHandler>(),
                                           this);

            Workers = new WorkerQueue(Logger, Pipeline, options);

            Router = new MessageRouter(this, handlers);

            _persistence = new Lazy <IEnvelopePersistence>(() => container.GetInstance <IEnvelopePersistence>());
        }
コード例 #3
0
 public MessageRouter(IMessagingRoot root, HandlerGraph handlers)
 {
     _serializers = root.Serialization;
     _subscribers = root.Subscribers;
     _handlers    = handlers;
     _logger      = root.Logger;
     _settings    = root.Settings;
     _workers     = _handlers.Workers;
 }
コード例 #4
0
 public SchedulingAgent(ISubscriberGraph subscribers, IWorkerQueue workers, SqlServerSettings mssqlSettings,
                        MessagingSettings settings, ITransportLogger logger, IRetries retries)
     : base(settings, logger,
            new RunScheduledJobs(workers, mssqlSettings, logger, retries, settings),
            new RecoverIncomingMessages(workers, settings, mssqlSettings, logger),
            new RecoverOutgoingMessages(subscribers, settings, mssqlSettings, logger),
            new ReassignFromDormantNodes(mssqlSettings, settings)
            )
 {
     _mssqlSettings = mssqlSettings;
 }
コード例 #5
0
        public RecoverOutgoingMessages(ISubscriberGraph subscribers, MessagingSettings settings, EnvelopeTables marker,
                                       ITransportLogger logger)
        {
            _subscribers = subscribers;
            _settings    = settings;
            _marker      = marker;
            _logger      = logger;

            _findUniqueDestinations   = $"select distinct destination from {_marker.Outgoing}";
            _findOutgoingEnvelopesSql = $"select body from {marker.Outgoing} where owner_id = {TransportConstants.AnyNode} and destination = :destination limit {settings.Retries.RecoveryBatchSize}";
            _deleteOutgoingSql        = $"delete from {marker.Outgoing} where owner_id = :owner and destination = :destination";
        }
コード例 #6
0
        public RecoverOutgoingMessages(ISubscriberGraph subscribers, MessagingSettings settings, SqlServerSettings mssqlSettings,
                                       ITransportLogger logger)
        {
            _subscribers   = subscribers;
            _settings      = settings;
            _mssqlSettings = mssqlSettings;
            _logger        = logger;

            _findUniqueDestinations   = $"select distinct destination from {_mssqlSettings.SchemaName}.{SqlServerEnvelopePersistor.OutgoingTable}";
            _findOutgoingEnvelopesSql = $"select top {settings.Retries.RecoveryBatchSize} body from {_mssqlSettings.SchemaName}.{SqlServerEnvelopePersistor.OutgoingTable} where owner_id = {TransportConstants.AnyNode} and destination = @destination";
            _deleteOutgoingSql        = $"delete from {_mssqlSettings.SchemaName}.{SqlServerEnvelopePersistor.OutgoingTable} where owner_id = :owner and destination = @destination";
        }
コード例 #7
0
 public SchedulingAgent(ISubscriberGraph subscribers, IWorkerQueue workers, IDocumentStore store,
                        JasperOptions settings, ITransportLogger logger, StoreOptions storeOptions, IRetries retries,
                        EnvelopeTables tables)
     : base(settings, logger,
            new RunScheduledJobs(workers, store, tables, logger, retries),
            new RecoverIncomingMessages(workers, settings, tables, logger),
            new RecoverOutgoingMessages(subscribers, settings, tables, logger),
            new ReassignFromDormantNodes(tables, settings)
            )
 {
     _store = store;
 }
コード例 #8
0
        public DurabilityAgent(JasperOptions options,
                               ITransportLogger logger,
                               ILogger <DurabilityAgent> trace,
                               IWorkerQueue workers,
                               IEnvelopePersistence persistence,
                               ISubscriberGraph subscribers)
        {
            if (persistence is NulloEnvelopePersistence)
            {
                _disabled = true;
                return;
            }

            options.DurabilityAgent = this;

            _options     = options;
            Logger       = logger;
            _trace       = trace;
            _workers     = workers;
            _persistence = persistence;



            _storage = _persistence.AgentStorage;

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

            NodeId = _options.UniqueNodeId;

            IncomingMessages = new RecoverIncomingMessages(workers, options, logger);
            OutgoingMessages = new RecoverOutgoingMessages(subscribers, options, logger);
            NodeReassignment = new NodeReassignment(options, logger);
            ScheduledJobs    = new RunScheduledJobs(options, logger);
        }
コード例 #9
0
 public RecoverOutgoingMessages(ISubscriberGraph subscribers, JasperOptions settings, ITransportLogger logger)
 {
     _subscribers = subscribers;
     _settings    = settings;
     _logger      = logger;
 }