Changelog
October 16, 2023
Breaking Changes (Code Incompatibility)
Kakfa Client (0.14.0)
❗responsive-pub/134
and responsive-pub/135
changed the way a new instance of ResponsiveKafkaStreams
is created. These
changes apply to dev.responsive.kafka-client
versions 0.14.0
and above.
Please modify your code to use the constructor in place of the static factory method:
- KafkaStreams streams = ResponsiveKafkaStreams.create(...);
+ KafkaStreams streams = new ResponsiveKafkaStreams(...);
It also removed the timestamped versions of the StoreSuppliers
since all
Responsive store implementations are compatible with timestamps. To create a
timestamped store, you now only need to specify it in one place: the StoreBuilder
.
For a timestamped KeyValueStore you will still be using the
ResponsiveStores#timestampedKeyValueStoreBuilder
API, but can now pass in any kind
of KeyValueBytesStoreSupplier
provided by ResponsiveStores
. You can apply all
of these changes to your application code with the following sed
commands:
FILE="<application-code-file-path>"
sed -ie "s|ResponsiveKafkaStreams.create|new ResponsiveKafkaStreams|g" ${FILE}
sed -ie "s|ResponsiveKeyValueParams.timestamped|ResponsiveKeyValueParams.keyValue|g" ${FILE}
sed -ie "s|ResponsiveKeyValueParams.timestampedFact|ResponsiveKeyValueParams.fact|g" ${FILE}
sed -ie "s|ResponsiveStores.timestampedKeyValueStore|ResponsiveStores.keyValueStore|g" ${FILE}
❗responsive-pub/148: This change restructured code to distinguish between public apis and internal implementation classes. Some classes, therefore, may have slightly shifted package names. If your application fails to compile after Responsive client versions, remove the imports that are not found and re-import them with the same class name.
Kafka Client (0.14.0)
✨responsive-pub/133: Support configuring changelog truncation. This feature will allow you to optionally truncate changelogs when using Responsive stores to reduce storage utilization on your Kafka cluster. We recommend leaving the changelog enabled as an additional source of data recovery. Responsive guarantees durability of your records independently from this features.
✨responsive-pub/144:
Responsive now supports GlobalKTables
! You can now create GlobalKTables
backed by Responsive's remote storage. Plugging them into your Streams
application is just as easy (and in fact exactly the same) as configuring a
regular KTable or KeyValueStore using ResponsiveStores
:
final GlobalKTable<Long, Long> globalTable = builder.globalTable(
GLOBAL_TOPIC,
ResponsiveStores.materialized(ResponsiveKeyValueParams.keyValue(STORE_NAME))
);
✨ responsive-pub/150:
Responsive platform is now compatible with all topology optimizations, including
the previously restricted config option reuse.ktable.source.topics
. This
optimization enables source KTables to reuse their input topic as a changelog,
avoiding the need to duplicate the source topic contents. Note that this
optimization is incompatible with the new changelog truncation feature, however, and
applying it will automatically disable changelog truncation for all source KTables.
🐛 responsive-pub/119:
Fixes a bug in the handling of writes with a null
value so that they are
correctly identified as a tombstone.
🐛 responsive-pub/146:
Fixes an (internal) bug where the internal property grace_gc_seconds
was not
correctly configured for state stores with TTL enabled.
Operator (0.14.0)
✨responsive-pub/120: The Expected Latency Diagnoser was introduced, which allows you to specify a goal for the expected latency of a record being processed by a subtopology. The "expected latency" is defined here as the amount of time between when the record is enqueued on the source topic and the point at which it has finished being processed through the subtopology.
✨responsive-pub/131: Introduced the Thread Saturation Diagnoser, which will scale down the number of nodes in your application if threads are not being fully utilized.