| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Keiro.DeadLetter
Description
Durable records for process-manager and router dispatches rejected by a target state machine.
Use recordDispatchDeadLetter from a worker before acknowledging its source
event, and listDispatchDeadLetters to inspect the durable witnesses for one
dispatcher. Inserts are idempotent under source-event redelivery.
Synopsis
- data DispatcherKind
- data DispatchDeadLetter = DispatchDeadLetter {
- dispatcherKind :: !DispatcherKind
- dispatcherName :: !Text
- correlationId :: !Text
- sourceEventId :: !EventId
- sourceGlobalPosition :: !GlobalPosition
- emitIndex :: !Int
- targetStreamName :: !StreamName
- errorClass :: !Text
- errorDetail :: !Text
- attemptCount :: !Int
- data DispatchDeadLetterRecord = DispatchDeadLetterRecord {
- deadLetterId :: !Int64
- dispatcherKind :: !DispatcherKind
- dispatcherName :: !Text
- correlationId :: !Text
- sourceEventId :: !EventId
- sourceGlobalPosition :: !GlobalPosition
- emitIndex :: !Int
- targetStreamName :: !StreamName
- errorClass :: !Text
- errorDetail :: !Text
- attemptCount :: !Int
- createdAt :: !UTCTime
- recordDispatchDeadLetter :: forall (es :: [Effect]). Store :> es => DispatchDeadLetter -> Eff es ()
- listDispatchDeadLetters :: forall (es :: [Effect]). Store :> es => Text -> Eff es [DispatchDeadLetterRecord]
Documentation
data DispatcherKind Source #
Which coordination primitive attempted the rejected dispatch.
Constructors
| DispatcherProcessManager | |
| DispatcherRouter |
Instances
data DispatchDeadLetter Source #
Fields persisted for one rejected dispatch.
Constructors
| DispatchDeadLetter | |
Fields
| |
Instances
| Generic DispatchDeadLetter Source # | |||||
Defined in Keiro.DeadLetter.Schema Associated Types
Methods from :: DispatchDeadLetter -> Rep DispatchDeadLetter x # to :: Rep DispatchDeadLetter x -> DispatchDeadLetter # | |||||
| Show DispatchDeadLetter Source # | |||||
Defined in Keiro.DeadLetter.Schema Methods showsPrec :: Int -> DispatchDeadLetter -> ShowS # show :: DispatchDeadLetter -> String # showList :: [DispatchDeadLetter] -> ShowS # | |||||
| Eq DispatchDeadLetter Source # | |||||
Defined in Keiro.DeadLetter.Schema Methods (==) :: DispatchDeadLetter -> DispatchDeadLetter -> Bool # (/=) :: DispatchDeadLetter -> DispatchDeadLetter -> Bool # | |||||
| type Rep DispatchDeadLetter Source # | |||||
Defined in Keiro.DeadLetter.Schema type Rep DispatchDeadLetter = D1 ('MetaData "DispatchDeadLetter" "Keiro.DeadLetter.Schema" "keiro-0.12.0.0-inplace" 'False) (C1 ('MetaCons "DispatchDeadLetter" 'PrefixI 'True) (((S1 ('MetaSel ('Just "dispatcherKind") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DispatcherKind) :*: S1 ('MetaSel ('Just "dispatcherName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "correlationId") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text) :*: (S1 ('MetaSel ('Just "sourceEventId") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 EventId) :*: S1 ('MetaSel ('Just "sourceGlobalPosition") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GlobalPosition)))) :*: ((S1 ('MetaSel ('Just "emitIndex") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "targetStreamName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 StreamName)) :*: (S1 ('MetaSel ('Just "errorClass") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text) :*: (S1 ('MetaSel ('Just "errorDetail") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text) :*: S1 ('MetaSel ('Just "attemptCount") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int)))))) | |||||
data DispatchDeadLetterRecord Source #
A persisted rejected dispatch, including database-managed identity and time.
Constructors
| DispatchDeadLetterRecord | |
Fields
| |
Instances
| Generic DispatchDeadLetterRecord Source # | |||||
Defined in Keiro.DeadLetter.Schema Associated Types
Methods from :: DispatchDeadLetterRecord -> Rep DispatchDeadLetterRecord x # to :: Rep DispatchDeadLetterRecord x -> DispatchDeadLetterRecord # | |||||
| Show DispatchDeadLetterRecord Source # | |||||
Defined in Keiro.DeadLetter.Schema Methods showsPrec :: Int -> DispatchDeadLetterRecord -> ShowS # show :: DispatchDeadLetterRecord -> String # showList :: [DispatchDeadLetterRecord] -> ShowS # | |||||
| Eq DispatchDeadLetterRecord Source # | |||||
Defined in Keiro.DeadLetter.Schema Methods (==) :: DispatchDeadLetterRecord -> DispatchDeadLetterRecord -> Bool # (/=) :: DispatchDeadLetterRecord -> DispatchDeadLetterRecord -> Bool # | |||||
| type Rep DispatchDeadLetterRecord Source # | |||||
Defined in Keiro.DeadLetter.Schema type Rep DispatchDeadLetterRecord = D1 ('MetaData "DispatchDeadLetterRecord" "Keiro.DeadLetter.Schema" "keiro-0.12.0.0-inplace" 'False) (C1 ('MetaCons "DispatchDeadLetterRecord" 'PrefixI 'True) (((S1 ('MetaSel ('Just "deadLetterId") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int64) :*: (S1 ('MetaSel ('Just "dispatcherKind") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DispatcherKind) :*: S1 ('MetaSel ('Just "dispatcherName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text))) :*: (S1 ('MetaSel ('Just "correlationId") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text) :*: (S1 ('MetaSel ('Just "sourceEventId") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 EventId) :*: S1 ('MetaSel ('Just "sourceGlobalPosition") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GlobalPosition)))) :*: ((S1 ('MetaSel ('Just "emitIndex") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: (S1 ('MetaSel ('Just "targetStreamName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 StreamName) :*: S1 ('MetaSel ('Just "errorClass") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text))) :*: (S1 ('MetaSel ('Just "errorDetail") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text) :*: (S1 ('MetaSel ('Just "attemptCount") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "createdAt") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UTCTime)))))) | |||||
recordDispatchDeadLetter :: forall (es :: [Effect]). Store :> es => DispatchDeadLetter -> Eff es () Source #
Idempotently persist one rejected dispatch.
listDispatchDeadLetters :: forall (es :: [Effect]). Store :> es => Text -> Eff es [DispatchDeadLetterRecord] Source #
List one dispatcher's rejected dispatches, newest first.