All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Flusswerk Logger can handle function calls with the format String as sole argument.
- Reporting of partial retries can now be customized by overriding
ProcessReport.reportComplexRetry(Message message, RetryProcessingException e)
andProcessReport.reportComplexFailedAfterMaxRetries(Message message, RetryProcessingException e)
.
- Automatically recover from channel-level exceptions. This involves a breaking change in the constructor of
FlusswerkConsumer
, which now requires aRabbitClient
instead of aChannel
.
- Outgoing routes may now include a list of topics instead of a single topic. A
Route
can be used to send a message to several topics at once. - The
DefaultFlusswerkReport
logs tracing information.
FlusswerkProcessReport
,StructuredProcessReport
andSilentProcessReport
have been removed. Users who would like to customize their process report can subclass DefaultProcessReport or implement the ProcessReport interface.
- Remove SNAPSHOT version from pom
- The Counter
flusswerk_messages_seconds
now records the processing time in seconds (#444) - Flusswerk default metrics names now follow best practices (#420)
- The DefaultProcessReport now supports common defaults and sensible structured fields so that most applications don't need to implement their own ProcessReport anymore (DefaultProcessReport)
- Migrated to SpringBoot 3 / JDK17
flowInfo.duration()
returns aDuration
object instead oflong
(#444)- Support for partial retries: When a workload is split in smaller chunks, then part of these can be successful and part can be retried (e.g. when sending all images of a book individually to cloud services). See RetryProcessingException.send() for details.
- Flusswerk can now deserialize messages without
@JsonName
annotations.
- Rely on automatic connection recovery instead of managing it manually (#410)
- Flusswerk metrics separated from application metrics (#405)
- Tracing information added to messages send with
SkipProcessingException
(#404)
- Message processing can now be skipped by throwing a SkipProcessingException. Log messages now have a field
status
to indicate this. (#355) - New framework metrics
flusswerk_messages_total
andflusswerk_messages_seconds
(Counter). The prefix is independent from the application prefix since the metric is the same for all Flusswerk-based applications. (#381). - New framework metrics
flusswerk_workers
(Gauge). The prefix is independent from the application prefix since the metric is the same for all Flusswerk-based applications. (#381). - Flusswerk applications now can send raw messages:
Topic.sendRaw(byte[] message)
(#381).
- Autoformatting now uses com.spotify:fmt-maven-plugin and works with JDK17.
- The framework metrics
flusswerk_processed_times
andflusswerk_execution_time
have been deprecated since they don't follow Prometheus best practices. - The logging field
duration_ms
is deprecated since a corresponding fieldduration
exists and will be removed in the future. Logging and metrics will strictly use SI base units where possible.