示例#1
0
        public DurableWorkerQueue(Endpoint endpoint, IHandlerPipeline pipeline,
                                  AdvancedSettings settings, IEnvelopePersistence persistence, ITransportLogger logger)
        {
            _settings    = settings;
            _persistence = persistence;
            _logger      = logger;

            endpoint.ExecutionOptions.CancellationToken = settings.Cancellation;

            _receiver = new ActionBlock <Envelope>(async envelope =>
            {
                try
                {
                    envelope.ContentType = envelope.ContentType ?? "application/json";

                    await pipeline.Invoke(envelope, this);
                }
                catch (Exception e)
                {
                    // This *should* never happen, but of course it will
                    logger.LogException(e);
                }
            }, endpoint.ExecutionOptions);

            _policy = Policy
                      .Handle <Exception>()
                      .WaitAndRetryForeverAsync(i => (i * 100).Milliseconds()
                                                , (e, timeSpan) => {
                _logger.LogException(e);
            });
        }
        public DurableLocalSendingAgent(Endpoint endpoint, IHandlerPipeline pipeline,
                                        AdvancedSettings settings, IEnvelopePersistence persistence, ITransportLogger logger,
                                        MessagingSerializationGraph serializers, IMessageLogger messageLogger) : base(endpoint, pipeline, settings, persistence, logger)
        {
            _settings      = settings;
            _persistence   = persistence;
            _logger        = logger;
            _serializers   = serializers;
            _messageLogger = messageLogger;
            Destination    = endpoint.Uri;

            Endpoint = endpoint;
            ReplyUri = TransportConstants.RepliesUri;
        }
示例#3
0
        public RunScheduledJobs(IWorkerQueue workers, SqlServerSettings mssqlSettings, ITransportLogger logger, IRetries retries, MessagingSettings settings)
        {
            _workers       = workers;
            _mssqlSettings = mssqlSettings;
            _logger        = logger;
            _retries       = retries;
            _settings      = settings;

            _persistor = new SqlServerEnvelopePersistor(_mssqlSettings);

            _findReadyToExecuteJobs = $"select body from {mssqlSettings.SchemaName}.{SqlServerEnvelopePersistor.IncomingTable} where status = '{TransportConstants.Scheduled}' and execution_time <= @time";
        }
示例#4
0
        public SchedulingAgent(ISubscriberGraph subscribers, IWorkerQueue workers, IDocumentStore store, MessagingSettings 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 ExternalTransportBase(string protocol, TSettings options, ITransportLogger logger,
                              JasperOptions jasperOptions)
     : base(protocol, logger, jasperOptions)
 {
     _options = options;
 }
示例#6
0
        public RunScheduledJobs(IWorkerQueue workers, IDocumentStore store, EnvelopeTables marker, ITransportLogger logger, IRetries retries)
        {
            _workers = workers;
            _marker  = marker;
            _logger  = logger;
            _retries = retries;

            _persistor = new MartenEnvelopePersistor(store, _marker);

            _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)";
        }
示例#7
0
 public TcpTransport(IDurableMessagingFactory factory, ITransportLogger logger, MessagingSettings settings) : base("tcp", factory, logger, settings)
 {
 }
示例#8
0
 public IListeningAgent CreateListeningAgent(Uri uri, MessagingSettings settings, ITransportLogger logger)
 {
     return(new RabbitMQListeningAgent(uri, logger, _model.Value, EnvelopeMapping, this));
 }
示例#9
0
 public ISender CreateSender(ITransportLogger logger, CancellationToken cancellation)
 {
     // TODO -- will need to create a reply uri & listener here
     return(new RabbitMQSender(logger, this, _model.Value, cancellation));
 }
示例#10
0
 public static void LogTransportEventsWith(this Jasper.Configuration.Logging logging, ITransportLogger logger)
 {
     logging.Parent.Services.AddSingleton <ITransportLogger>(logger);
 }
示例#11
0
 public BatchedSender(Uri destination, ISenderProtocol protocol, CancellationToken cancellation, ITransportLogger logger)
 {
     Destination   = destination;
     _protocol     = protocol;
     _cancellation = cancellation;
     _logger       = logger;
 }