README.md

Kafka
========

Kafka client for Elixir/Erlang.

Usage
-----

```elixir
# In your config/config.exs
config Kafka,
  brokers: [{HOST, PORT}]

# Retrieve kafka metadata
Kafka.Server.metadata

# Retrieve the latest offset
Kafka.Server.latest_offset(topic, partition, name \\ Kafka.Server)

# Retrieve the earliest offset
Kafka.Server.earliest_offset(topic, partition, name \\ Kafka.Server)

# Retrieve offset from a specific time
Kafka.Server.offset(topic, partition, time, name \\ Kafka.Server) # time is of type [datetime](http://erlang.org/doc/man/calendar.html#type-datetime)

# Fetch kafka logs
Kafka.Server.fetch(topic, partition, offset, name \\ Kafka.Server, wait_time \\ 10, min_bytes \\ 1, max_bytes \\ 1_000_000)

# Produce kafka logs
Kafka.Server.produce(topic, partition, value, name \\ Kafka.Server, key \\ nil, required_acks \\ 0, timeout \\ 100)

# Stream kafka logs
Kafka.Server.stream(topic, partition, name \\ Kafka.Server, offset \\ 0, handler \\ KafkaHandler)
```


### Test
#### Unit tests
```
mix test --no-start
```

#### Integration tests 
Add the broker config to `config/config.exs` and run:
```
mix test --only integration
```