Changelog¶
All notable changes to Tentacolous are documented on this page.
The format is based on Keep a Changelog.
0.3.0 — 2026-09-01¶
Added¶
- Added the
ChangeEventSinkSPI. Any Spring bean implementing it receives every detected change after the in-process listener methods run, with at-least-once delivery and the existing retry flow on failure. - Added a native Kafka sink (
tentacolous.kafka.*), enabled whenspring-kafkais on the classpath. One record per event, keyed by the record key, withacks=alland producer idempotence by default. - Added a native RabbitMQ sink (
tentacolous.rabbitmq.*), enabled whenspring-boot-starter-amqpis on the classpath. Publishes to a durable topic exchange with routing keyentity.operation. - Added the
envelope(default) andrawmessage formats, plustentacolous-event-id,tentacolous-entityandtentacolous-operationmessage headers. - Added captures (the
@TentacolousCaptureannotation or an equivalentCapturebean) to forward a table to the configured sinks without writing a listener method. Both accept operations,entityName,exclude, a declarative filter, a programmaticTentacolousFilter, andorder; the capture filters decide which changes reach the sinks.
Changed¶
spring-kafkaandspring-boot-starter-amqpare declared as optional dependencies. Applications that do not use them are unaffected.
Documentation¶
- Added an Architecture FAQ covering the Debezium comparison, delivery and ordering guarantees, listener and crash failure modes, the Kafka/broker path, no-code captures, scaling limits, database load, security, and the hard limitations.
0.2.0 — 2026-07-11¶
Added¶
- Added automatic dialect detection and database-specific infrastructure for PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, and SQLite.
- Added portable polling, history queries, JSON payload generation, generated IDs, and boolean handling through the dialect contract.
Fixed¶
- Removed PostgreSQL-only SQL from common polling and history paths.
- Normalized Oracle JSON keys so payloads deserialize to conventional Java property names.
Validation¶
- Validated all six dialects with a 28-listener end-to-end matrix covering INSERT, UPDATE, DELETE,
@TentacolousListener, declarative/custom filters, ordering, exclusions, previous entities, and list/array history.
Considerations¶
- SQLite record keys must not be reused during history retention. Prefer
INTEGER PRIMARY KEY AUTOINCREMENTor UUID for business tables.
0.1.8 — 2026-07-10¶
Added¶
- Added Spring-managed programmatic filters for
@UponInserting,@UponUpdating,@UponDeleting, and@TentacolousListenerthrough the newfilterannotation parameter. - Added
TentacolousFilter<T>andTentacolousFilterContext<T>with access to the current entity, the previous entity for updates, and the database operation. - Added the generic
@TentacolousListenerannotation withActionListener.INSERT,ActionListener.UPDATE, andActionListener.DELETEas an alternative to the operation-specific annotations. - Added versioned English and Spanish documentation for
0.1.8, including examples for generic listeners and custom filters.
Behavior¶
- A custom filter has priority over declarative
field,valueType, andvaluefilters when both styles are configured, and Tentacolous logs a warning. - Declarative filters must now define
field,valueType, andvaluetogether. - Existing
@UponInserting,@UponUpdating, and@UponDeletinglisteners remain fully supported. - Custom filter entity types are validated when listeners are registered.
- Methods can declare multiple Tentacolous listener annotations only when each annotation targets a different operation.
- Filter contexts now expose the event ID, entity name, and record key.
- Filtered listeners reuse deserialized entities when invoked.
- Filter and listener errors now include the operation, entity, method, and event details.
- All listener annotations now support ascending execution order through the
orderparameter. - Filter contexts now expose
getChangedFields()andhasChanged(...)for update events.
0.1.7 — 2026-07-09¶
Added¶
- Added optional previous-entity support for
@UponUpdatinglisteners. - Added optional change history support for
@UponUpdatingand@UponDeletinglisteners. - Added support for history parameters as
List<Entity>orEntity[]. - Added
old_payloadandrecord_keyevent metadata to support previous values and record history. - Added automatic schema migration for the new event columns when schema management is enabled.
Changed¶
@UponUpdatingnow supports one, two, or three parameters:- current entity;
- current entity and previous entity;
- current entity, previous entity, and history.
@UponDeletingnow supports one or two parameters:- deleted entity;
- deleted entity and history.
- Updated README and documentation examples for version
0.1.7.
Notes¶
- Projects using
tentacolous.schema-management=nonemust update their manual database infrastructure to include the newold_payloadandrecord_keycolumns and the updated trigger function.
0.1.6 — 2026-07-07¶
Added¶
- Initial public release of Tentacolous.
- Core library functionality.
- Initial API.
- Basic documentation and usage examples.
Fixed¶
- No fixes yet.
Known issues¶
- This is an early release.
- Some features may change in future versions.
- Bugs may still exist.