Module documentation for 0.3.0.0
Please note that the API is not considered stable yet.
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-clientwill feel very familiar.
nakadi-clientprovides additional higher-level interfaces.
A type-safe API for interacting with Nakadi. For example, the name of an event type has type
Textor something generic.
Integrated and configurable retry mechanism.
Conduit based interfaces for streaming events.
Convenient Subscription API interface (
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 using the Subscription API:
import qualified Network.Nakadi as Nakadi processSubscription :: Nakadi.SubscriptionId -> IO () processSubscription subscriptionId = do runResourceT $ do (connection, source) <- Nakadi.subscriptionSource config Nothing subscriptionId Nakadi.runSubscription config connection $ source .| iterMC processEvent .| Nakadi.subscriptionSink