// SAMPLE: FetchErrorReport public async Task load_error_report(IEnvelopePersistence persistence, Guid envelopeId) { var report = await persistence.Admin.LoadDeadLetterEnvelope(envelopeId); // The Id Console.WriteLine(report.Id); // Why it was moved out Console.WriteLine(report.Explanation); // The underlying message typ Console.WriteLine(report.MessageType); // Reconstitute the original Envelope // Envelope.Data would have the raw data here var envelope = report.RebuildEnvelope(); // The name ofthe system that sent the message Console.WriteLine(report.Source); // The .Net Exception type name Console.WriteLine(report.ExceptionType); // Just the message of the exception Console.WriteLine(report.ExceptionMessage); // JUST SHOW ME THE FULL STACKTRACE ALREADY!!!! Console.WriteLine(report.ExceptionText); }
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 DurabilityAgent(ITransportLogger logger, ILogger <DurabilityAgent> trace, IWorkerQueue workers, IEnvelopePersistence persistence, ITransportRuntime runtime, AdvancedSettings settings) { if (persistence is NulloEnvelopePersistence) { _disabled = true; return; } Logger = logger; _trace = trace; _workers = workers; _persistence = persistence; _settings = settings; _storage = _persistence.AgentStorage; _worker = new ActionBlock <IMessagingAction>(processAction, new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 1, CancellationToken = _settings.Cancellation }); NodeId = _settings.UniqueNodeId; IncomingMessages = new RecoverIncomingMessages(persistence, workers, settings, logger); OutgoingMessages = new RecoverOutgoingMessages(runtime, settings, logger); NodeReassignment = new NodeReassignment(settings); ScheduledJobs = new RunScheduledJobs(settings, logger); }
//private readonly IWorkerQueue _workers; public MetricsCollector(IMetrics metrics, IEnvelopePersistence persistence, IMessageLogger logger, AdvancedSettings settings) { _metrics = metrics; _persistence = persistence; _logger = logger; _settings = settings; }
public RecoverIncomingMessages(IEnvelopePersistence persistence, IWorkerQueue workers, AdvancedSettings settings, ITransportLogger logger) { _persistence = persistence; _workers = workers; this._settings = settings; _logger = logger; }
public RecoverIncomingMessages(IEnvelopePersistence persistence, IWorkerQueue workers, JasperOptions options, ITransportLogger logger) { _persistence = persistence; _workers = workers; _options = options; _logger = logger; }
public MetricsCollector(IMetrics metrics, IEnvelopePersistence persistence, IMessageLogger logger, JasperOptions settings, IWorkerQueue workers) { _metrics = metrics; _persistence = persistence; _logger = logger; _settings = settings; _workers = workers; }
public DurableListener(IListeningAgent agent, IWorkerQueue queues, ITransportLogger logger, JasperOptions options, IEnvelopePersistence persistence) { _agent = agent; _queues = queues; _logger = logger; _options = options; _persistence = persistence; }
public DurableLoopbackSendingAgent(Uri destination, IWorkerQueue queues, IEnvelopePersistence persistence, SerializationGraph serializers, ITransportLogger logger) { _queues = queues; _serializers = serializers; _logger = logger; _persistence = persistence; Destination = destination; }
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; }
public DurableSendingAgent(ISender sender, AdvancedSettings settings, ITransportLogger logger, IMessageLogger messageLogger, IEnvelopePersistence persistence, Endpoint endpoint) : base(logger, messageLogger, sender, settings, endpoint) { _logger = logger; _persistence = persistence; _policy = Policy .Handle <Exception>() .WaitAndRetryForeverAsync(i => (i * 100).Milliseconds() , (e, timeSpan) => { _logger.LogException(e, message: "Failed while trying to enqueue a message batch for retries"); }); }
public DurableCallback(Envelope envelope, IWorkerQueue queue, IEnvelopePersistence persistence, ITransportLogger logger) { _envelope = envelope; _queue = queue; _persistence = persistence; _logger = logger; _policy = Policy .Handle <Exception>() .WaitAndRetryForeverAsync(i => (i * 100).Milliseconds() , (e, timeSpan) => { _logger.LogException(e); }); }
public DurableRetryAgent(ISender sender, JasperOptions options, ITransportLogger logger, IEnvelopePersistence persistence) : base(sender, options.Retries) { _options = options; _logger = logger; _persistence = persistence; _policy = Policy .Handle <Exception>() .WaitAndRetryForeverAsync(i => (i * 100).Milliseconds() , (e, timeSpan) => { _logger.LogException(e, message: "Failed while trying to enqueue a message batch for retries"); }); }
public DurableSendingAgent(Uri destination, ISender sender, ITransportLogger logger, JasperOptions options, IEnvelopePersistence persistence) : base(destination, sender, logger, options, new DurableRetryAgent(sender, options, logger, persistence)) { _logger = logger; _options = options; _persistence = persistence; _policy = Policy .Handle <Exception>() .WaitAndRetryForeverAsync(i => (i * 100).Milliseconds() , (e, timeSpan) => { _logger.LogException(e); }); }
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 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); } catch (Exception e) { // This *should* never happen, but of course it will logger.LogException(e); } }, endpoint.ExecutionOptions); }