All Versions
Latest Version
Avg Release Cycle
150 days
Latest Release
97 days ago

Changelog History

  • v0.11.0

    July 15, 2020

    ๐Ÿš‘ KafkaEx 0.11.0 is a large improvement to KafkaEx that sees the introduction of the Kayrock client, numerous stability fixes, and a critical fix that eliminates double-consuming messages when experiencing network failures under load.

    ๐Ÿ’ฅ Breaking changes

    • โฌ‡๏ธ Drop support for Elixir < 1.5
    • ๐Ÿ›  Partitioner has been fixed to match the behavior of the Java client. This will cause key assignment to differ. To keep the old behavior, use the KafkaEx.LegacyPartitioner module. (#399)

    ๐Ÿ›  Fixes

    • Numerous fixes to error handling especially for networking connections (#347, #351 )
    • ๐Ÿ“‡ Metadata is refreshed after topic create/delete(#349)
    • ๐Ÿฑ Compression actually works for producing now ๐Ÿ˜ฌ (#362)
    • Don't crash when throttled by quotas (#402)
    • 0๏ธโƒฃ Default partitioner works the same way as the Java client now (#399)
    • ๐Ÿ“‡ When fetching metadata for a subset of topics, don't remove the metadata for the unfetched topics. (#409)

    ๐Ÿ‘Œ Improvements

    • Any GenServer can be used as a KafkaEx.GenConsumer (#339)
    • Can specify wait time before attempting reconnect (#347)
    • ๐Ÿ”€ now uses the KafkaEx.Server interface, which inherits the sync_timeout setting. This avoids timeouts when sync_timeout needs to be greater than default. (#354)
    • KafkaEx can now use Kayrock as the client implementation. This is a large change, and is pushing toward the improvements we want in 1.0 to allow the library to easily support new versions of the Kafka protocol. (#356, #359, #364, #366, #367, #369, #370, #374, #375, #377, #379, #387, #406, #408)
    • KafkaEx.Protocol.Fetch.Message includes the topic and partition, allowing consumers to know which topic and partition they consumed from.
    • ๐Ÿ”— Add KafkaEx.start_link_worker/1-2 to start a working and link it to the current process.
    • ๐Ÿ‘ Allow setting the client_id for the application - supports better monitoring, debugging, and quotas. (#388)
    • ๐Ÿ“‡ Send metadata requests to a random broker rather than the same one each time (#395)
    • Retry joining a consumer group 6 times rather than failing (#375, #403)

    Kayrock client

    ๐Ÿ‘€ See Kayrock and the Future of KafkaEx

    ๐Ÿ‘ Note that the Kayrock implementation doesn't support Kafka < 0.11

    ๐Ÿ‘Œ Improvements over default client:

    • Can specify message API versions for the API
    • Can specify message API versions for the consumer group API - NOTE that if you specify OffsetCommit API version >= 2, it will attempt to store the offsets in kafka, which will have no data about the topic unless you migrate the data. This could result in losing or reprocessing data. Migration can be done out of band, or can be done via the appropriate API calls within KafkaEx.
    • ๐Ÿ‘ Allow specifying OffsetCommit API version in KafkaEx.fetch


    • โœ… Test suite uses KafkaEx 0.11 now in preparation for fully supporting Kafka API versions.
    • KafkaEx.Protocol.Produce cleaned up (#380)
    • Documentation improvements (#383, #384)
    • โœ… Test against Elixir 1.9 (#394)
    • โœ… Use OTP 22.3.3+ for OTP 22.2 testing to avoid SSL bug. (#405)


    Thanks to @gerbal, @ukrbublik, @jbruggem, @thulio, @dantswain, @thiamsantos, @kennethito, @habutre, @davidrusu, @getong, @shamilish, @adrienmo, @mjparrott, @richardlarocque for their contributions!

  • v0.10.0

    April 11, 2019

    ๐Ÿ”‹ Features

    • ๐Ÿ‘ Allow passing in state to a KafkaEx.GenConsumer by defining a KafkaEx.GenConsumer.init/3 callback. Adds a default implementation of init/3 to ensure backward compatibility. -- @mtrudel
    • ๐Ÿ‘Œ Support DeleteTopics API for Kafka 0.10+ -- @jbruggem
    • โž• Add a default partitioner using murmur2 hashing when key is provided, or random partitioning otherwise. Use the KafkaEx.Partitioner behaviour to define a different partitioner, and enable it by adding it to the partitioner configuration setting.


    PRs Included:


  • v0.9.0

    December 07, 2018

    ๐Ÿ”‹ Features:

    ๐Ÿ› Bug fixes:

    • ๐ŸŒฒ Send better logging messages on failure (@cdegroot)


    PRs included:


  • v0.8.3

    May 31, 2018
  • v0.8.2

    March 20, 2018
  • v0.8.1

    November 30, 2017
  • v0.8.0

    August 30, 2017
  • v0.7.0

    July 25, 2017
  • v0.6.5

    April 03, 2017