Skip to content

Releases: fd4s/fs2-kafka

fs2-kafka v3.0.0

11 Apr 13:02
2953ada
Compare
Choose a tag to compare

This is the first stable fs2-kafka release to be based on the 3.x series of the Apache Kafka client library. It is available for Scala 2.12, 2.13, and 3.2; all users are encouraged to upgrade. There are some backwards-incompatible API changes, set out below; for further details, see release notes for 3.0.0-RC1 and previous milestone versions.

Development of the 2.x series will now start to wind down, and the 1.x series will be discontinued. New pull requests that make substantial changes should target the 3.x branch.

Apologies to those whose outstanding pull requests weren't merged in time for this release - it was already very overdue. The intention is to start a 4.x branch in the near future to make further backwards-incompatible improvements.

Backwards-incompatible changes

Serializers and Deserializers

Some changes have been made to how fs2-kafka represents Serializers and Deserializers. The following references Serializers but the same changes have been made to Deserializers.

Typed KeySerializer and ValueSerializer

In some cases, such as when using a schema registry with the fs2-kafka-vulcan module, a given serializer will only be valid either for keys or for values, but not both. This is now represented by the KeySerializer type, representing the ability to serialize a key, and the ValueSerializer type, representing the ability to serialize a value. These are supertypes of the plain Serializer type, which can serialize either a key or a value.

Implementation note: KeySerializer, ValueSerializer and Serializer are aliased subtypes of a new GenericSerializer class, which is contravariantly parameterized with a marker trait KeyOrValue with subtypes Key and Value. User code usually won't need to be concerned with these details.

Replacement of RecordSerializer (and RecordDeserializer) with Resource

RecordSerializer served two purposes: to distinguish between key and value serializers when summoning them implicitly, and to wrap effectful instantiation of serializers. The former purpose is now served by the KeySerializer and ValueSerializer types; the latter, by cats-effect's Resource type. Usages of RecordSerializer[F, A] are thus now replaced by Resource[F, KeySerializer[F, A]] or Resource[F, ValueSerializer[F, A]].

Change to Vulcan module's API

The AvroSerializer class no longer has a using method that returns RecordSerializer; instead it has two methods, forKey and forValue, that respectively return KeySerializer and ValueSerializer inside Resource. (Equivalent changes have been made to AvroDeserializer.)

Simplified representation of producer records (#901)

The ProducerRecords, TransactionalProducerRecords and ProducerResult classes have been replaced with type aliases for different kinds of fs2.Chunk, which they previously wrapped. This was enabled by removal of "passthrough" functionality, which can instead be implemented in user code if needed.

What's Changed since v3.0.0-RC1

Full Changelog since v2.6.0: v2.6.0...v3.0.0

fs2-kafka v1.11.0 - final 1.x release

12 Apr 10:11
f822164
Compare
Choose a tag to compare

This is likely to be the final release of fs2-kafka v1.x, unless a serious security vulnerability emerges; please upgrade to v3.0.0.

What's Changed

New Contributors

Full Changelog: v1.10.0...v1.11.0

fs2-kafka v3.0.0-RC1

27 Mar 14:14
27c4e34
Compare
Choose a tag to compare
fs2-kafka v3.0.0-RC1 Pre-release
Pre-release

This release candidate builds on previous milestone releases of fs2-kafka 3.0. It includes all changes from v2.6.0 and also introduces the breaking change of removing the RecordDeserializer and RecordSerializer types, in favour of simply using Resource for allocating KeySerializer, ValueSerializer etc. It also reintroduces support for Scala 2.12, to encourage all users to migrate quickly to the new version.

What's Changed

Breaking changes

Enhancements

  • Add partitionFor for given topic with KafkaProducer by @sergio-margale in #1111
  • 1099 Fix produce method of TransactionalKafkaProducer, when method is invoked with empty records and non-empty offsets by @chernovsa in #1100
  • Change transactional producer to await produce before ending transaction by @bastewart in #1127

Dependency updates

Misc

New Contributors

Full Changelog: v3.0.0-M9...v3.0.0-RC1

fs2-kafka v2.6.0

11 Apr 12:03
ab5c540
Compare
Choose a tag to compare

This release previously failed to publish but has now been published successfully.

What's Changed

Enhancements

  • Change transactional producer to await produce before ending transaction by @bastewart in #1127
  • 1099 Fix produce method of TransactionalKafkaProducer, when method is invoked with empty records and non-empty offsets by @chernovsa in #1100
  • #1143 - Add transform and option methods on RecordSerializer and RecordDeserializer by @geirolz in #1160
  • Add partitionFor for given topic with KafkaProducer by @sergio-margale in #1111

Dependency updates

Misc

New Contributors

Full Changelog: v2.5.0...v2.6.0

v3.0.0-M9

21 Jul 09:29
1c5f563
Compare
Choose a tag to compare
v3.0.0-M9 Pre-release
Pre-release

This milestone release replaces v3.0.0-M8, which was released from the wrong branch and should not be used.

What's Changed

New Contributors

Full Changelog: v3.0.0-M7...v3.0.0-M9

fs2-kakfa v3.0.0-M8

19 Jul 11:12
c907a34
Compare
Choose a tag to compare
fs2-kakfa v3.0.0-M8 Pre-release
Pre-release

This is a milestone for the forthcoming v3.0.0, based on the v3.x series of the Java kafka-clients library. It contains the same changes as v2.5.0; for differences from the v2.x series, see release notes for previous milestones.

What's Changed

New Contributors

Full Changelog: v3.0.0-M7...v3.0.0-M8

v2.5.0

19 Jul 10:02
0e07e55
Compare
Choose a tag to compare

This release is identical to v2.5.0-RC1. It is backwards binary compatible with previous stable releases in the 2.x series, but not with milestones for v2.5.0. It includes several enhancements and bug fixes - for full details see notes for v2.5.0-M2, v2.5.0-M3 and v2.5.0-RC1.

What's Changed

New Contributors

Full Changelog: v2.4.0...v2.5.0

fs2-kafka v2.5.0-RC1

16 Jul 22:41
c8f2053
Compare
Choose a tag to compare
fs2-kafka v2.5.0-RC1 Pre-release
Pre-release

This release contains several enhancements and bug fixes. It also reverts two changes from v2.5.0-M2: see below.

What's Changed

Enhancements

  • Optimise {Committable,}ProducerRecords apply methods by @bastewart in #978
  • Add chunk constructors to {Committable,}ProducerRecords by @bastewart in #979
  • Add implicit Deserializer attempt by @geirolz in #983

Bug fixes

Reverted changes

  • Remove ConsumerSettings.unit and ProducerSettings.nothing by @bplommer in #977
    • These were added in #911 to serve as placeholders to use with the newly added withSerializers/withDeserializers method, but the same purpose can be served by using Array[Byte] for key and value types.
  • Revert #902 by @bplommer in #976
    • Restores previous behaviour whereby deserialization happens inside KafkaConsumerActor - see #962 for rationale.

Updates

CI

New Contributors

Full Changelog: v2.5.0-M3...v2.5.0-RC1

fs2-kafka v3.0.0-M7

01 Apr 08:07
Compare
Choose a tag to compare
fs2-kafka v3.0.0-M7 Pre-release
Pre-release

This milestone release for fs2-kafka 3.x contains the same improvements as v2.5.0-M3.

fs2-kafka v2.5.0-M3

01 Apr 08:05
64eaa1d
Compare
Choose a tag to compare
fs2-kafka v2.5.0-M3 Pre-release
Pre-release

This milestone release exposes some additional consumer functionality and fixes a long-standing bug/shortcoming in the Vulcan integration module, inherited from the Confluent Kafka Avro serializer, whereby auto-registration of Union and some other schemas would not work as expected.

What's Changed

Enhancements

  • Additional consumer functionality exposed by @dmedser in #919
  • Fix auto-registration of Avro union (etc) types by @bplommer in #932

Internals and updates

New Contributors

Full Changelog: 2.5.0-M1...v2.5.0-M3