Skip to content

Releases: zalando-nakadi/nakadi-producer-spring-boot-starter

Prerelease 21.1.0-RC4

18 Aug 15:18
c413c6c
Compare
Choose a tag to compare
Prerelease 21.1.0-RC4 Pre-release
Pre-release

This is a prerelease used for internal testing.

Compared to 21.0.0, this contains changes from these PRs:

  • #169 – spring-core dependency bump
  • #166 – documentation of spring properties
  • #171 – batch-delete eventlog entries, implementing #159
  • #173 – add QueryStatementBatcher
  • #167° – replace SimpleSnapshotEventProducer by static of-Methods
  • #176° – Bugfix: no stups token bean if not needed
  • #179° – use Zonky embedded postgres instead of opentable one for tests
  • #177° – Add DELETE permission to the eventlog table (fixing #101)
  • #175° – introduce "switch off all submission" toggle
  • #174° – Delete after insert

° – Some of these were not yet merged when this release was created, for those we have the latest state as-of 2023-08-18.

21.0.0 Dependency updates, bulk firing of events, compacted event types

21 Dec 17:03
1e284c8
Compare
Choose a tag to compare

This is the first release of the 21.x.x series, for Spring-Boot 2.5

Relevant changes

  • Dependency updates: (#143, #163, #150, #156, #155): We now depend on Spring-Boot 2.5 (Spring-core 5.3), Flyway 7 (but it also should work with newer versions of these), Fahrschein 0.24, and (optionally) tokens 0.14.0. (We also updated the dependency to the postgresql client, and are using a newer version of JUnit internally.)
    • The minimum Java version is now Java 11.
    • This is using the new Flyway callback infrastructure. If you are using this, please be careful.
    • Submission to Nakadi is now using gzip compression by default. You can disable this or pick zstd compression using the nakadi-producer.content-encoding configuration variable.
  • Feature (#140, implemented in #142): It is now possible to persist multiple events in batch to the database, with new methods on EventLogWriter.
    This should improve the throughput considerably (and reduce load on the DB).
  • Feature (#154, implemented in #164): It is now possible (though only recommended in specific cases) to fire events for compacted event types. This is done by providing Spring-beans of type CompactionKeyExtractor.

Please note that the configuration variable nakadi-producer.lock-size introduced in 20.4.0, with default unlimited, will become mandatory in the next major release (22). We recommend setting it already now, as without it you can run into out-of-memory errors in some cases.

All merged PRs:

  • Bump postgresql from 42.2.25 to 42.4.1 in /nakadi-producer-spring-boot-starter by @dependabot in #150
  • Bump postgresql from 42.4.1 to 42.4.3 in /nakadi-producer-spring-boot-starter by @dependabot in #156
  • Bump postgresql from 42.3.3 to 42.3.8 in /nakadi-producer-loadtest by @dependabot in #155
  • #140 Persist multiple events in batch by @fbrns in #141
  • use batching for snapshots, too (#140) by @ePaul in #161
  • #142 Update flyway and spring boot by @johannesknauft in #143
  • Bump spring-core from 5.3.12 to 5.3.20 in /nakadi-producer by @dependabot in #163
  • fix boolean operation in flyway migration (&& → ||) by @ePaul in #165
  • support compacted event types (#154) via spring beans by @ePaul in #164

New Contributors

Full Changelog: 20.4.0...21.0.0

experimental prerelease 21.0.0-RC3b

07 Dec 17:31
56f2ec8
Compare
Choose a tag to compare
Pre-release

This is an experimental release, containing one possible implementation of #154.

It is not clear yet whether this will become part of the final 21.0.0, of whether we go the other route (in 21.0.0-RC3a).

Change compared to 21.0.0-RC2:

  • #164: support compacted event types (via spring beans)
    You now can submit events to a compacted event type, by adding a CompactionKeyExtractor spring bean.

experimental prerelease 21.0.0-RC3a

07 Dec 17:34
34f6804
Compare
Choose a tag to compare
Pre-release

This was an experimental release, containing one possible implementation of #154.

This did not become part of 21.0.0, we decided to go the other route (in 21.0.0-RC3b).

Change compared to 21.0.0-RC2:

  • #158: support compacted event types (via register method)
    You now can submit events to a compacted event type, by calling registerCompactionKeyExtractor on the EventLogWriter.

Prerelease 21.0.0-RC2

07 Dec 17:14
f140b38
Compare
Choose a tag to compare
Prerelease 21.0.0-RC2 Pre-release
Pre-release

This is the second release-candidate for the 21.x.x series.

More detailed release notes are still to be written, use at your own peril.

Relevant changes compared to 20.4.0:

  • #143 (+ #163): Dependency updates: We now depend on spring-boot 2.5, Flyway 7, and (optionally) tokens 0.14.0.
    This means that the minimum Java version is now Java 11.
    This is using the new Flyway callback infrastructure. If you are using this, please be careful.

  • Feature: (#140, implemented in #141) : Possibility to persist multiple events in bulk (using just one request to the DB).
    This should improve the performance if you create many events of the same type in the same transaction.

We might do incompatible changes between this and the final release of 21.0.0 – only use this if you are prepared to work with this.

Relevant changes compared to 21.0.0-RC1 (which was already in 20.4.0):

  • Feature (#112 + #111, implemented in #152): Configurable lock size

    When sending events out, we are first locking them. With this change the number of locked events gets configurable in the nakadi-producer.lock-size property. The lock size defines the maximum amount of events which are loaded into memory and published in one run (in one submission per event type). By default, all events are loaded into memory. In future releases, this property will become mandatory.

20.4.0: Make lock-size configurable

16 Nov 12:57
dc01695
Compare
Choose a tag to compare

This version is for Spring-Boot 2.

Feature (#112): Configurable lock size

When sending events out, we are first locking them. With this change the number of locked events gets configurable in the nakadi-producer.lock-size property. The lock size defines the maximum amount of events which are loaded into memory and published in one run (in one submission per event type). By default, all events are loaded into memory. In future releases, this property will become mandatory.

Prerelease 21.0.0-RC1

26 Nov 15:15
21.0.0-RC1
ab19025
Compare
Choose a tag to compare
Prerelease 21.0.0-RC1 Pre-release
Pre-release

This is the first release-candidate for the 21.x.x series.

More detailed release notes are still to be written, use at your own peril.

Relevant changes compared to 20.3.1:

  • #143: Dependency updates: We now depend on spring-boot 2.5, Flyway 7, and (optionally) tokens 0.14.0.
    This might mean that this doesn't work with Java 8 anymore (feedback appreciated).
    This is using the new Flyway callback infrastructure. If you are using this, please be careful.

  • #141: Possibility to persist multiple events in bulk (using just request to the DB).
    This should improve the performance if you create many events in the same transaction.
    (The API for this feature is not yet finalized, please give feedback on this, specifically
    the way data change events are submitted. Comments in #141, please.)

Note that this Prerelease was built from a merge of the two feature branches, before they were merged to master.
We might do incompatible changes between this and the final release of 21.0.0 – only use this if you are prepared to work with this.

20.3.1: More exception logging

20 May 16:49
8c3ca55
Compare
Choose a tag to compare

This release is for Spring-Boot 2.

The only change is how errors are logged when not all events can be submitted to Nakadi.
This change was contributed by @riteshpuj2013, who faced an issue which was difficult to analyze.

No special migration considerations needed.

4.4.0: Better Flow-Id handling, configurable lock timeouts

07 May 13:21
f4843bf
Compare
Choose a tag to compare

This version is for Spring-Boot 1.

Feature: (#116) Better flow id handling for Snapshots
The current versions of tracer-spring-boot-starter do not setup tracing instrumentation for spring boots management endpoints (at least if they are mapped to a different port). Due to this, snapshots triggered via the management endpoints had no flow ids and a warning was logged for each event before sending.

We now create a new trace iff there is none yet in those cases, so that snapshot events will always have a flow id.

Feature: (#120) Configurable lock timeout

When sending events out, we are first locking them for some time so no other process running the same library is trying to send out the same events. With this change, the time for which those events are locked is configurable, which is helpful for applications with low latency and high volume requirements.
Look for lock-duration and lock-duration-buffer in the README if you want to use this feature.

No migration is needed, the default settings behave as before (but might change in the future).

Minor improvement: Some dependencies received some updates

20.3.0: Make lock-timeout for event submission configurable

06 May 16:27
c08646f
Compare
Choose a tag to compare

This version is for Spring-Boot 2.

Feature (#120): Configurable lock timeout

When sending events out, we are first locking them for some time so no other process running the same library is trying to send out the same events. With this change, the time for which those events are locked is configurable, which is helpful for applications with low latency and high volume requirements.
Look for lock-duration and lock-duration-buffer in the README if you want to use this feature.

No migration is needed, the default settings behave as before (but might change in the future).

Benchmark (#83): We also got a nakadi-producer-load-test subproject, which allows to measure how fast large quantities of events can be submitted (using a locally running Nakadi instance).
See the README in that sub-project folder for how to use it.