Table of Contents

Class MailOutboxSettings

Namespace
MailFathom.Application.Mail.Delivery.Outbox
Assembly
MailFathom.Application.dll

Bounds one delivery pass: how much it takes, how long it holds it, how long one send may run, and how often a transient failure is retried.

public sealed record MailOutboxSettings : IEquatable<MailOutboxSettings>
Inheritance
MailOutboxSettings
Implements
Inherited Members

Remarks

The ordering between the two durations is the whole reason this is validated rather than passed as loose values. An attempt has to be cancelled before its lease can expire underneath it, because a lease that ran out while its holder was still transmitting is a second attempt taking a message the first may already have sent — so a timeout at or above the lease duration is refused rather than warned about.

The attempt bound and the two retry delays are the outbox's own budget for offering a message again, and there is exactly one of them. What an attempt calls is already retried inside itself by the delivery dependency's resilience pipeline, which repeats a submission server's explicit temporary rejection and nothing else; a second bound at this level would multiply against that one instead of bounding anything.

Properties

AllowedLateness

Gets how long after the time a send was written for this deployment will still deliver it.

AttemptTimeout

Gets how long one send may be attempted for before it is cancelled.

LeaseDuration

Gets how long a claim holds each record it takes.

MaxAttempts

Gets how many attempts one send may be handed out for before a transient failure ends it.

MaxDeliveriesPerPass

Gets the greatest number of queued sends one pass claims.

RetryBaseDelay

Gets the delay the first retry is drawn around, from which the doubling grows.

RetryMaxDelay

Gets the ceiling a grown retry delay never exceeds.

Methods

Create(int, TimeSpan, TimeSpan, int, TimeSpan, TimeSpan, TimeSpan)

States the bounds one pass runs under.