packages feed

nakadi-client-0.6.0.0: README.md

# nakadi-client [![Hackage version](https://img.shields.io/hackage/v/nakadi-client.svg?label=Hackage)](https://hackage.haskell.org/package/nakadi-client) [![Stackage version](https://www.stackage.org/package/nakadi-client/badge/lts?label=Stackage)](https://www.stackage.org/package/nakadi-client) [![Build Status](https://travis-ci.org/mtesseract/nakadi-client.svg?branch=master)](https://travis-ci.org/mtesseract/nakadi-client)

### About

`nakadi-client` is a BSD2/BSD3 licensed Haskell client library for
interacting with the [Nakadi event
broker](https://zalando.github.io/nakadi/) system developed by
[Zalando](https://github.com/zalando). The streaming is built on top
of [Conduit](https://haskell-lang.org/library/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](https://github.com/zalando/nakadi#running-a-server).

- A type-safe API for interacting with Nakadi. For example, the name
  of an event type has type `EventTypeName`, not `Text` or something
  generic. Correct types for values like `CursorOffset` are provided
  (which must be treated as opaque strings).

- Integrated and configurable retry mechanism.

- Conduit based interfaces for streaming events.

- Support for temporary subscriptions.

- Convenient Subscription API interface (`subscriptionProcess` &
  `subscriptionProcessConduit`), which frees the user from any manual
  bookkeeping.

- Mechanism for registering callbacks for logging and token injection.

### Example

Example code showing how to dump a subscription:

```haskell
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)
```