Table of Contents

Class DeadLetteredJob

Namespace
MailFathom.Application.Jobs.DeadLetters
Assembly
MailFathom.Application.dll

One job nothing will attempt again, as the operator deciding what to do about it reads it.

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

Remarks

Everything here is either MailFathom's own name for something or a count: the type's name, the identity the enqueuer composed out of aliases and identifiers, the account alias, how many attempts were spent, and the operator-safe record of what ended it. The payload is deliberately absent — it names a message occurrence, and an operator deciding whether to run the work again does not need to be told which message while deciding it.

The two instants answer different questions. EnqueuedAt says how long the work has been outstanding, which is what makes a backlog of dead letters legible as one; DeadLetteredAt says when it stopped, which is what a failure is correlated against the deployment change that caused it by.

Constructors

DeadLetteredJob(JobId, JobType, JobIdempotencyKey, MailAccountId?, int, DateTimeOffset, DateTimeOffset)

One job nothing will attempt again, as the operator deciding what to do about it reads it.

Properties

AccountId

The account the work belongs to, and null when it belongs to none.

AttemptCount

How many attempts were handed out before the job stopped.

DeadLetteredAt

When the job reached the state it is in now.

EnqueuedAt

When the work was first enqueued.

JobId

The job's own identifier, which is what a retry or a drop names it by.

JobType

The kind of work.

Key

The identity the enqueuer composed, which the row keeps and a retry runs under unchanged.

LastFailure

Gets the classification and reason of the failure that ended the job, and null where the row carries none.