| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Keiro.Inbox.Kafka
Description
Reconstruct an IntegrationEvent from Kafka payload bytes plus
headers.
This module is the receiving-side counterpart of
integrationEventToKafkaRecord. It is pure: the
caller supplies the bytes and the Text-keyed header map produced by
its Kafka adapter, and gets back a decoded envelope or a typed error.
keiro itself does not depend on hw-kafka-client or
shibuya-kafka-adapter; the consumer adapter in EP-22 bridges the
broker library's header type to [(Text, Text)] before calling
integrationEventFromKafka.
Synopsis
- data KafkaInboundRecord = KafkaInboundRecord {}
- data KafkaDecodeError
- integrationEventFromKafka :: KafkaInboundRecord -> Either KafkaDecodeError (IntegrationEvent, KafkaDeliveryRef)
Documentation
data KafkaInboundRecord Source #
A Kafka record as seen by the consumer-side adapter, decoupled from the broker library's record type.
Constructors
| KafkaInboundRecord | |
Instances
data KafkaDecodeError Source #
Typed failures from integrationEventFromKafka.
Constructors
| MissingHeader !Text | |
| InvalidIntHeader !Text !Text | |
| InvalidUuidHeader !Text !Text | |
| InvalidTimeHeader !Text !Text | |
| InvalidJsonHeader !Text !Text |
Instances
| Generic KafkaDecodeError Source # | |||||
Defined in Keiro.Inbox.Kafka Associated Types
Methods from :: KafkaDecodeError -> Rep KafkaDecodeError x # to :: Rep KafkaDecodeError x -> KafkaDecodeError # | |||||
| Show KafkaDecodeError Source # | |||||
Defined in Keiro.Inbox.Kafka Methods showsPrec :: Int -> KafkaDecodeError -> ShowS # show :: KafkaDecodeError -> String # showList :: [KafkaDecodeError] -> ShowS # | |||||
| Eq KafkaDecodeError Source # | |||||
Defined in Keiro.Inbox.Kafka Methods (==) :: KafkaDecodeError -> KafkaDecodeError -> Bool # (/=) :: KafkaDecodeError -> KafkaDecodeError -> Bool # | |||||
| type Rep KafkaDecodeError Source # | |||||
Defined in Keiro.Inbox.Kafka type Rep KafkaDecodeError = D1 ('MetaData "KafkaDecodeError" "Keiro.Inbox.Kafka" "keiro-0.12.0.0-inplace" 'False) ((C1 ('MetaCons "MissingHeader" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :+: C1 ('MetaCons "InvalidIntHeader" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text))) :+: (C1 ('MetaCons "InvalidUuidHeader" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :+: (C1 ('MetaCons "InvalidTimeHeader" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :+: C1 ('MetaCons "InvalidJsonHeader" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text))))) | |||||
integrationEventFromKafka :: KafkaInboundRecord -> Either KafkaDecodeError (IntegrationEvent, KafkaDeliveryRef) Source #
Reconstruct a full IntegrationEvent plus the KafkaDeliveryRef
recorded for diagnostics.
The reconstruction is faithful to the canonical header names defined
by Event (e.g. keiro-message-id, keiro-source,
traceparent). Missing required headers (keiro-source,
keiro-destination, keiro-event-type, keiro-schema-version,
content-type, keiro-message-id) produce MissingHeader; malformed
numeric or UUID headers produce InvalidIntHeader / InvalidUuidHeader.
Optional headers are silently absent in the resulting envelope.