Fast GenStages for reading and writting into Apache Kafka. GenStages are built using excelent feature-full Klarna's Brod Kafka client.
Unfortunately both Kafka & GenStage are using consumer/producer naming. Note that what is consumer from Kafka's perspective, is producer from GenStage's.
KafkaGenStage.Consumer
(so:producer
GenStage) is buffering events as well as demand.
KafkaGenStage.Producer
(coming soon) is controlling demand manually, synchronizing GenStage's ask with brod's ack.
{:ok, consumer} = KafkaGenStage.Consumer.start_link(:started_brod_client, "topic_id", read_until: :latest)