Kayrock (kayrock v0.1.12) View Source

Documentation for Kayrock.

Link to this section Summary

Types

Represents an API response message

Specifies the version of an API message

A pid for a Kayrock.BrokerConnection process.

A pid for a Kayrock.Client process.

A broker's advertised integer node id

A node selector for sending messages to the cluster

Link to this section Types

Specs

api_response() :: map()

Represents an API response message

This will generally be a generated struct.

Specs

api_version() :: non_neg_integer()

Specifies the version of an API message

Kayrock will generally try to pick a reasonable default here, but you can override it in many cases. See Kafka Protocol Documentation

Specs

broker_pid() :: pid()

A pid for a Kayrock.BrokerConnection process.

This is for low-level communication with individual brokers. Generally you should work with a client_pid.

Specs

client_pid() :: pid()

A pid for a Kayrock.Client process.

Specs

node_id() :: integer()

A broker's advertised integer node id

Specs

node_selector() ::
  node_id()
  | :random
  | :controller
  | {:topic_partition, topic_name(), partition_id()}

A node selector for sending messages to the cluster

Generally the Kayrock API will select the right node depending on the operation. These are exposed to provide fine-grained user control in a few cases where it might make sense to override the default.

Possible values:

  • Integer - Directly access a node by id. Generally you should not do this unless you are operating at a low level.
  • :random - Select a node at random from the cluster metadata.
  • :controller - Select the controller node - this is used for cluster management messages

Specs

partition_id() :: non_neg_integer()

Specs

topic_name() :: binary()

Link to this section Functions

Link to this function

api_versions(client_pid, version \\ 0, node_selector \\ :controller)

View Source

Specs

api_versions(client_pid(), api_version(), node_selector()) ::
  {:ok, api_response()}

Fetch the supported API versions from the cluster

Kayrock currently supports versions 0 and 1.

ApiVersions

Link to this function

broker_sync_call(broker_pid, request)

View Source

Specs

broker_sync_call(pid(), Kayrock.Request.t()) :: {:ok, map()}

Makes a synchronous call directly to a broker

broker_id should be the pid of a Kayrock.BrokerConnection. request must have an implementation for the Kayrock.Request protocol.

Link to this function

client_call(client_pid, request, node_selector \\ :random)

View Source

Specs

client_call(client_pid(), Kayrock.Request.t(), node_selector()) ::
  {:ok, api_response()}

Make an api call to a Kafka cluster mediated through a client

Link to this function

create_topics(client_pid, topics, timeout \\ -1, version \\ 2, node_selector \\ :controller)

View Source

Create one or more topics

Link to this function

delete_topics(client_pid, topics, timeout \\ -1, version \\ 1, node_selector \\ :controller)

View Source
Link to this function

fetch(client_pid, topic, partition, offset)

View Source
Link to this function

produce(client_pid, record_batch, topic, partition, acks \\ -1, timeout \\ 1000)

View Source
Link to this function

topics_metadata(client_pid, topics)

View Source