Commit Graph

242 Commits

Author SHA1 Message Date
Oliver Drotbohm
c145ba5a07 GH-1051 - Only unregister resubmitted event publication in case of errors.
Before this commit the code resubmitting incomplete event publications unregistered them independently of whether they succeeded or not. We now only do that for failed submissions as an error here indicates a failure to *submit* the publication. As the execution is likely performed asynchronously, a successful hand-off does not implicate the publication being completely processed.
2025-02-23 13:13:24 +01:00
Oliver Drotbohm
a9365ed257 GH-1056 - Switch to object identity comparison when looking up event publications.
We now rather use an object identity comparison in TargetEventPublication.isAssociatedWith(…) instead of an ….equals(…) as that would return the wrong publication for identical events.
2025-02-21 22:55:12 +01:00
Oliver Drotbohm
4090499634 GH-1027 - Prepare next development iteration. 2025-01-23 22:16:36 +01:00
Oliver Drotbohm
36370ae31a GH-1027 - Release version 1.4.0-M1. 2025-01-23 22:16:36 +01:00
Oliver Drotbohm
f3f8deb3b3 GH-1024 - Remove AWS support in favor of Spring Cloud AWS.
Follow-up of GH-671.
2025-01-23 12:56:36 +01:00
Oliver Drotbohm
7fabc528b4 GH-1010 - Update copyright declarations to include 2025. 2025-01-06 16:58:45 +01:00
Oliver Drotbohm
9e2d96394f GH-964 - Prevent archiving JPA entity from being included in non-archiving setups.
We now keep the JPA entity classes to store current and archived event publications in separate packages so that the archiving one can be included only when the archiving mode is selected.
2024-11-25 13:59:56 +01:00
Oliver Drotbohm
f8728fc009 GH-955 - Prepare next development iteration. 2024-11-21 20:13:56 +01:00
Oliver Drotbohm
6f6597e163 GH-955 - Release version 1.3.0. 2024-11-21 20:13:55 +01:00
Oliver Drotbohm
b542c03b7d GH-870 - Fix Javadoc in PersistentApplicationEventMulticaster. 2024-11-21 12:59:41 +01:00
Oliver Drotbohm
55e4249d18 GH-937 - Fix logger creation in EventExternalizationSupport. 2024-11-18 16:23:41 +01:00
Oliver Drotbohm
7320b3bf4a GH-918 - Lazify archiving Cypher statement initialization.
Eagerly initializing the archiving Cypher statements required for the new archiving event completion mode breaks our compatibility with Spring Boot 3.2 as that depends on a Cypher library version not containing the exists(…) operator yet. We now lazily instantiate those statements.
2024-10-29 13:57:15 +01:00
Oliver Drotbohm
3d35d48d18 GH-912 - Prepare next development iteration. 2024-10-26 15:58:59 +02:00
Oliver Drotbohm
05c5550312 GH-912 - Release version 1.3.0-RC1. 2024-10-26 15:58:59 +02:00
Oliver Drotbohm
b189dbc725 GH-806 - Polish Neo4j archiving mode.
We now explicitly set the completion date property of newly created event publications to null. The copying data manipulation statements now properly copy all properties of the publication notes into the archive.
2024-10-25 22:03:25 +02:00
Cora Iberkleid
4132ad3a38 GH-806 - Add archive support for Neo4j.
Co-authored-by: Oliver Drotbohm <oliver.drotbohm@broadcom.com>
2024-10-25 22:03:25 +02:00
Oliver Drotbohm
d302ad1937 GH-806 - Revamp JPA archive support.
We now use two separate entity types for archived and non-archived event publications to rpevent hibernate hickups when inserting an instance of a subtype with he same id.
2024-10-25 22:03:24 +02:00
Cora Iberkleid
6a85fb3350 GH-806 - Add archive support for JPA.
Co-authored-by: Oliver Drotbohm <oliver.drotbohm@broadcom.com>
2024-10-25 22:03:24 +02:00
Oliver Drotbohm
dc1148624b GH-806 - MongoDB archive mode now uses aggregation to mark event publications completed. 2024-10-25 22:03:24 +02:00
Cora Iberkleid
a7e4a798f0 GH-806 - Add archive support for MongoDB.
Co-authored-by: Oliver Drotbohm <oliver.drotbohm@broadcom.com>
2024-10-25 22:03:24 +02:00
Cora Iberkleid
2cb0db7f42 GH-806 - Add archive support for JDBC.
Co-authored-by: Oliver Drotbohm <oliver.drotbohm@broadcom.com>
2024-10-25 22:03:24 +02:00
Cora Iberkleid
179e4acf86 GH-806 - Add archiving completion mode.
We now support an archiving completion mode that copies the entry to be completed into a dedicated archive to retain the completed event publications but also keep the main publication store small for more efficient data access.

Co-authored-by: Oliver Drotbohm <oliver.drotbohm@broadcom.com>
2024-10-25 22:03:23 +02:00
Cora Iberkleid
80f6086034 GH-806 - Remove use of Lombok.
Co-authored-by: Oliver Drotbohm <oliver.drotbohm@broadcom.com>
2024-10-25 22:03:23 +02:00
Oliver Drotbohm
fe688cec1f GH-907 - Upgrade to Spring Boot 3.4 snapshots.
Tweak test containers setup for dynamic properties to adapt to Boot 3.4's new behavior [0].

[0] https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.4.0-RC1-Release-Notes#dynamic-properties-with-testcontainers
2024-10-25 13:13:08 +02:00
Oliver Drotbohm
cdd86a4ba1 GH-855 - Enable Kafka JSON rendering with default ObjectMapper.
In case no ObjectMapper bean instance is present, we now fall back to creating a default one to render a JSON byte array. This is useful in case Jackson is on the class path but not necessarily the JacksonObjectMapperBuilder, which is located in spring-web.
2024-10-25 08:45:05 +02:00
Oliver Drotbohm
29bc84cd0b GH-891 - DefaultEventPublicationRegistry now properly unregisters in-progress publication on failed resubmission.
DefaultEventPublicationRegistry.processIncompletePublications(…) now actively unregisters the publication from being considered in progress after completion (either successful or failed). While CompletionRegisteringAdvisor should take care of that on the target listeners we now leave the publications in progress in consistent state independent of the actual target being invoked. Decrease log level of the failed listener invocation as it's not unusual for the listener to fail.

Improved PublicationsInProgress by switching to a concurrent map internally to avoid ConcurrentModificationExceptions in case of multiple threads.
2024-10-21 13:49:29 +02:00
Oliver Drotbohm
d5477d1423 GH-881 - Support for SpEL expression in routing targets.
We now support SpEL expressions in routing targets for events to be externalized. Introduced a BrokerRouting.getTarget(Object) overload to allow access to the event object in the SpEL expression. To support those, event externalizers will have to call that method where they previously called ….getTarget().
2024-10-18 21:01:28 +02:00
Andreas Ahlenstorf
2ba1785bfb GH-884 - Fix typo in package name in configuration metadata. 2024-10-18 16:56:32 +02:00
Oliver Drotbohm
6da5d1dafb GH-874 - Add LICENSE and NOTICE files to binaries. 2024-10-14 22:14:51 +02:00
Oliver Drotbohm
84e9f38b07 GH-855 - Support to add headers in event externalization.
EventExternalizationConfiguration now exposes a ….headers(Class<T>, Function<T, Map<String, Object>) to allow to define a function that extracts headers from the event that are supposed to added to the message to be sent out. The Kafka and AMQP implementations have been augmented to consider those configurations.

Furthermore, if the mapping step prior to the externalization creates a Spring Message<?>, we add routing information as fallback and send it out as is.
2024-10-13 20:17:12 +02:00
Oliver Drotbohm
747834754e GH-873 - Upgrade to embedded MongoDB 4.16.1. 2024-10-13 19:43:50 +02:00
Oliver Drotbohm
a8835b211b GH-869 - Polishing.
Tweak header population to use the raw routing target. Expand test case to make sure it's retained as message header.
2024-10-13 19:43:50 +02:00
Josh Long
41aad245d4 GH-869 - Support for externalizing events into a Spring Messaging MessageChannel. 2024-10-13 19:43:49 +02:00
Oliver Drotbohm
5733a27ff4 GH-866 - Polishing.
Switch Oracle schema definition to make the serialized event column non null. Adapt test cases to always contain some content for the serialized event.

Original pull request: GH-868.
2024-10-11 11:10:32 +02:00
DSX
5dee1bd9cf GH-866 - JDBC event publication support for Oracle database.
We now support Oracle as database backend for the JDBC-based EventPublicationRegistry.

Original pull request: GH-868.
2024-10-11 11:10:04 +02:00
Oliver Drotbohm
42a9c48e80 GH-863 - Add convenience method for creating a default EventExternalizationConfiguration. 2024-10-08 15:09:12 +02:00
Oliver Drotbohm
9d249961c3 GH-859 - Avoid creating a transaction for event externalization.
We now use the ability to override transaction propagation introduce for GH-858 to tweak the application module listener declaration on DelegatingEventListener so that we do not create a transaction by default. This avoids a database connection being acquired as the listener is very likely to interact with a non-transactional resource anyway.
2024-10-06 12:54:17 +02:00
Oliver Drotbohm
f00e5dc0eb GH-858 - Polishing. 2024-10-06 12:44:10 +02:00
Oliver Drotbohm
d510697afa GH-858 - Allow customizing transaction propagation on @ApplicationModuleListener. 2024-10-06 12:44:01 +02:00
Marcin Słowiak
0ea5f326db GH-671 - Deprecate AWS SNS and SQS integration modules.
In favor of the implementations now available in Spring Cloud AWS [0].

[0] https://github.com/awspring/spring-cloud-aws/releases/tag/v3.2.0
2024-09-24 11:31:14 +02:00
FezLight
e0b79e5fb1 GH-836 - Add support for MariaDB database. 2024-09-24 11:23:05 +02:00
Oliver Drotbohm
0c2f79a56d GH-803 - Prepare next development iteration. 2024-09-20 23:26:04 +02:00
Oliver Drotbohm
a3ed03cff3 GH-803 - Release version 1.3.0-M3. 2024-09-20 23:26:03 +02:00
Oliver Drotbohm
db4ab8f55d GH-823 - Move spring.modulith.republish-outstanding-events-on-restart into spring.modulith.events namespace. 2024-09-13 17:51:22 +02:00
Oliver Drotbohm
03a6700a52 GH-804 - Polishing.
Actively reject attempts to use a dedicated schema with SQL Server. Prevent schema reset being executed if no schema is used. Properly report exception during database name detection.

Original pull request: GH-808.
2024-09-11 18:31:09 +02:00
Øyvind Johannessen
a1f2eb0482 GH-804 - Support for schema initialization on Microsoft SQL Server.
Original pull request: GH-808.
2024-09-11 18:30:32 +02:00
K. Siva Prasad Reddy
2b6a0bebf2 GH-795 - Using @MockitoBean and @MockitoSpyBean. 2024-09-04 14:37:46 +02:00
Martin Beentjes
efb3729079 GH-788 - Correct package declaration in JacksonEventSerializer. 2024-08-30 17:23:19 +02:00
Oliver Drotbohm
cd0b5cf5c3 GH-748 - Allow publication completion to delete database entries.
We now expose a spring.modulith.events.completion-mode property, defaulting the previous behavior to a value of UPDATE. The property can also be configured to DELETE, which will cause the persistence implementations to flip to removing the database entries for event publications instead of setting the completion date.
2024-08-27 21:52:53 +02:00
Oliver Drotbohm
65178e42de GH-785 - Prepare next development iteration. 2024-08-23 12:36:24 +02:00