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; } }
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>()); }
public MessageRouter(IMessagingRoot root, HandlerGraph handlers) { _serializers = root.Serialization; _subscribers = root.Subscribers; _handlers = handlers; _logger = root.Logger; _settings = root.Settings; _workers = _handlers.Workers; }
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; }
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"; }
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"; }
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; }
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); }
public RecoverOutgoingMessages(ISubscriberGraph subscribers, JasperOptions settings, ITransportLogger logger) { _subscribers = subscribers; _settings = settings; _logger = logger; }