Alpakka Kafka 1.0-RC1

Released 2018-12-11

First release candidate for Alpakka Kafka 1.0

On this Road to Alpakka 1.0 we may introduce non-compatible API changes. From version 1.0 Alpakka will stay binary-compatible between minor releases.

Having that said, Alpakka Kafka will start to make use of the @ApiMayChange annotation to keep the door open for API changes, so that new feature API can evolve more rapidly than other parts of Alpakka Kafka.

Highlights in this release

  • Use Kafka client 2.x poll API #614, investigated by @zaharidichev

  • No more WakeupException! The Kafka client API 2.x allows for specifying a timeout when polling the Kafka broker, thus we do not need to use the cranky tool of Kafka’s WakeupExceptions to be sure not to block a precious thread. The settings to configure wake-ups are not used anymore.

  • Upgrade to Kafka client 2.1.0 #660. This upgrade makes it possible to use of the zstandard compression (with Kafka 2.1 brokers).

  • Consumer shutdown is now delayed by stop-timeout (default 30 s) #673. This is especially relevant for committable partitioned sources as the stage needs to stay alive until committing has finished (reported in #672).

  • API Change: Alpakka Kafka consumers don’t fail for non-responding Kafka brokers anymore (as they used to to after a number of WakeupExceptions). To get the connectivity check back #674 suggests a possible way forward.

  • API Change: Standardised on spelling of committable in Producer.committableSink (Producer.commitableSink will be kept around throughout 1.0.x, but those methods are deprecated now) #645

  • New Committer.flow for standardised committing within a continuing flow #644

  • API Change: The response to the metadata request GetCommittedOffset now contains the TopicPartition #626 by @giftig.

  • API Change: Manual subscriptions (Subscriptions.assignment, assignmentWithOffset, assignmentOffsetsForTimes) do not allow setting a rebalance listener anymore (methods deprecated). Rebalancing does not occur for those #639.

  • Improvements to the new testkit #656, initiated by @johnclara’s work with the admin clients.

  • Continuous integration builds are now run against Adopt OpenJDK 8 and 11 #641.

Improved documentation

  • All examples now use the Committer instead of commitJavadsl/commitScaladsl.

  • Most examples now show the use of DrainingControl.

  • The Java examples shown in the documentation are now run in the tests #665.

  • Show transitive dependencies in the documentation #657

Everything done in this release is in the 1.0-RC1 milestone.

Other Highlights already in M1

  • New Committer.sink for standardised committing #622 by @rtimush

  • Commit with metadata #563 and #579 by @johnclara

  • Factored out akka.kafka.testkit for internal and external use: see Testing

  • Support for merging commit batches #584 by @rtimush

  • Reduced risk of message loss for partitioned sources #589

  • Expose Kafka errors to stream #617

  • Java APIs for all settings classes #616

  • Much more comprehensive tests

General information

This release is compiled and tested against Akka 2.5 and Scala 2.11 and 2.12.

This release was made possible by new and earlier contributors:

Author Commits Lines added Lines removed
ennru ennru 40 2630 1979
2m 2m 17 326 282
muditsin muditsin 2 14 10
zaharidichev zaharidichev 1 21 241
John Clara 1 20 6
giftig giftig 1 6 5
fancywriter fancywriter 1 1 1
Found an error in this documentation? The source code for this page can be found here. Please feel free to edit and contribute a pull request.