shibuya-core-0.13.0.0: src/Shibuya/Adapter.hs
-- | Adapter API - library-author facing.
-- Adapters bridge external systems to the framework.
-- Adapter owns queue semantics; runner never touches offsets directly.
module Shibuya.Adapter
( Adapter (..),
-- * Telemetry options
AdapterTelemetry (traceCorrelation),
defaultAdapterTelemetry,
TraceCorrelation (..),
)
where
import Data.Text (Text)
import Effectful (Eff)
import Shibuya.Core.Ingested (Ingested)
import Shibuya.Telemetry.Correlation (AdapterTelemetry (traceCorrelation), TraceCorrelation (..), defaultAdapterTelemetry)
import Streamly.Data.Stream (Stream)
-- | Queue adapter interface.
-- Provides a stream of ingested messages and shutdown capability.
data Adapter es msg = Adapter
{ -- | Name for logging/observability
adapterName :: !Text,
-- | Stream of leased messages
source :: Stream (Eff es) (Ingested es msg),
-- | Stop polling, release resources
shutdown :: Eff es (),
-- | Telemetry options for this adapter's processing spans, such as the
-- 'TraceCorrelation' policy. Start from 'defaultAdapterTelemetry' and
-- expose the value in the adapter's own configuration so users can
-- override it. Read once per processor.
telemetry :: !AdapterTelemetry
}