nakadi-client: Client library for the Nakadi Event Broker

[ bsd3, library, network ] [ Propose Tags ]

This package implements a client library for interacting with the Nakadi event broker system developed by Zalando.

[Skip to Readme]


  • Network
    • Network.Nakadi
      • Network.Nakadi.Base
      • Network.Nakadi.Config
      • Network.Nakadi.EventTypes
        • Network.Nakadi.EventTypes.CursorDistances
        • Network.Nakadi.EventTypes.CursorsLag
        • Network.Nakadi.EventTypes.EventType
        • Network.Nakadi.EventTypes.Events
        • Network.Nakadi.EventTypes.Partitions
        • Network.Nakadi.EventTypes.Schemas
        • Network.Nakadi.EventTypes.ShiftedCursors
      • Network.Nakadi.HttpBackendIO
      • Internal
        • Network.Nakadi.Internal.Http
        • Network.Nakadi.Internal.Retry
      • Network.Nakadi.Lenses
      • Network.Nakadi.Prelude
      • Network.Nakadi.Registry
      • Network.Nakadi.Subscriptions
        • Network.Nakadi.Subscriptions.Cursors
        • Network.Nakadi.Subscriptions.Events
        • Network.Nakadi.Subscriptions.Stats
        • Network.Nakadi.Subscriptions.Subscription
      • Network.Nakadi.Types
        • Network.Nakadi.Types.Config
        • Network.Nakadi.Types.Exceptions
        • Network.Nakadi.Types.Logger
        • Network.Nakadi.Types.Problem
        • Network.Nakadi.Types.Service


Manual Flags


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees


Versions [RSS],,,,,,,,,,,
Dependencies aeson, aeson-casing, base (>=4.7 && <5), bytestring, conduit, conduit-combinators, conduit-extra, containers, exceptions, hashable, http-client, http-client-tls, http-conduit, http-types, iso8601-time, lens, monad-control, monad-logger, mtl, resourcet, retry, safe-exceptions, scientific, split, template-haskell, text, time, transformers, transformers-base, unliftio-core, unordered-containers, uuid, vector [details]
License BSD-3-Clause
Copyright (c) 2017, 2018 Moritz Clasmeier
Author Moritz Clasmeier
Category Network
Home page
Bug tracker
Source repo head: git clone
Uploaded by mtesseract at 2018-02-18T21:30:46Z
Distributions NixOS:
Downloads 5647 total (52 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2018-02-18 [all 2 reports]

Readme for nakadi-client-

[back to package description]

nakadi-client Hackage version Stackage version Build Status


nakadi-client is a BSD2/BSD3 licensed Haskell client library for interacting with the Nakadi event broker system developed by Zalando. The streaming is built on top of Conduit.

Please note that the API is not considered stable yet.

nakadi-client provides:

  • Docker based test suite testing against the official Nakadi docker image (in progress).

  • A rather direct translation of Nakadi's REST API to Haskell. Thus, if you are familiar with Nakadi's REST API, the API exposed by nakadi-client will feel very familiar.

  • Where suitable, nakadi-client provides additional higher-level interfaces.

  • A type-safe API for interacting with Nakadi. For example, the name of an event type has type EventTypeName, not Text or something generic.

  • Integrated and configurable retry mechanism.

  • Conduit based interfaces for streaming events.

  • Convenient Subscription API interface (subscriptionSource & runSubscription), which frees the user from any manual bookkeeping of the Subscription Stream ID necessary for commiting cursors.

  • Mechanism for registering callbacks for logging and token injection.

  • Correct types for values like CursorOffset (which must be treated as opaque strings).

  • Basically each API function is exposed in two versions: One which requires the caller to pass in a Nakadi configuration value containing the information about how to connect to Nakadi and one which is suffixed with R (think: Reader monad), which expects to find the Nakadi configuration in the environment provided by a reader monad in your application's monad stack.


Example code showing how to dump a subscription:

dumpSubscription :: (MonadLogger m, MonadNakadi IO m) => Nakadi.SubscriptionId -> m ()
dumpSubscription subscriptionId =
  Nakadi.subscriptionProcess Nothing subscriptionId processBatch

  where processBatch :: MonadLogger m => Nakadi.SubscriptionEventStreamBatch Value -> m ()
        processBatch batch =
          logInfoN (tshow batch)