Commit Graph

132 Commits

Author SHA1 Message Date
Oliver Drotbohm
20a7474f2f GH-358 - Prepare next development iteration. 2023-11-03 09:02:46 +01:00
Oliver Drotbohm
6336e32d54 GH-358 - Release version 1.1.0-RC2. 2023-11-03 09:02:45 +01:00
Oliver Drotbohm
40ab6cecfc GH-357 - Reinstantiate general compatibility with Boot 3.2 / Framework 6.1.
We now gracefully fall back to reflective invocation of the application event listener shouldHandle(…) method if we're not on Spring Framework 6.2. If we are, we invoke the newly introduced method directly.

This allows projects to upgrade to Spring Modulith 1.1 without necessarily upgrading to Boot 3.2.
2023-11-02 14:27:52 +01:00
Oliver Drotbohm
e8898c1da1 GH-344 - Polishing.
Switch to DelegatingEventExternalizer APIs changed to return CompletableFuture. Imports, formatting. Drop dependencies not needed.
2023-11-02 08:22:28 +01:00
Maciej Walkowiak
d95da874bd GH-344 - Support for event externalization into AWS SNS and SQS.
Additional event externalization implementations for AWS SNS and SQS.

Original pull request: GH-350.
2023-11-02 08:22:28 +01:00
Oliver Drotbohm
0ae19fb301 GH-353 - Improvements in internal event externalization APIs.
DelegatingEventExternalizer.externalize(…) flavors now return a CompletableFuture to allow the target APIs to use asynchronous message sending and to transparently return a result from those invocations.
2023-11-01 23:48:06 +01:00
Oliver Drotbohm
e4190c47aa GH-346 - Allow explicit declaration of identifier in @ApplicationModuleListener. 2023-11-01 23:48:04 +01:00
Oliver Drotbohm
e5ca4f7183 GH-349 - Register parameters of methods annotated with @TransactionalEventListener for reflection. 2023-10-27 13:45:25 +02:00
Oliver Drotbohm
576b8f5074 GH-342 - Allow disabling event externalization.
We now expose spring.modulith.events.externalization.enabled that can be set to false to disable the event externalization completely. Useful in test cases, for example.
2023-10-23 12:22:42 +02:00
Oliver Drotbohm
69fd64dbf7 GH-341 - Prepare next development iteration. 2023-10-23 09:12:13 +02:00
Oliver Drotbohm
d4cde409a1 GH-341 - Release version 1.1.0-RC1. 2023-10-23 09:12:13 +02:00
Oliver Drotbohm
7ca64de924 GH-329 - Polish Javadoc. 2023-10-20 18:35:59 +02:00
Oliver Drotbohm
2241ae1960 GH-329 - Upgrade to Spring Boot 3.2 RC1.
Remove workaround of calling ApplicationListenerMethodAdapter.shouldHandle(…) reflectively.
2023-10-20 16:44:19 +02:00
Oliver Drotbohm
1482ba01f5 GH-310 - Revert "Remove time zone from Postgres event publication schema."
This reverts commit 19457cd736. Related ticket: GH-306.
2023-10-16 14:02:14 +02:00
Oliver Drotbohm
db1c2b813e GH-322 - Move @ApplicationModuleListener into ….modulith.events in spring-modulith-events-api. 2023-10-15 17:13:45 +02:00
Oliver Drotbohm
61fa94ad63 GH-303 - Prepare next development iteration. 2023-09-21 23:35:47 +02:00
Oliver Drotbohm
6f5b3c0baa GH-303 - Release version 1.1.0-M1. 2023-09-21 23:35:47 +02:00
Oliver Drotbohm
19457cd736 GH-306 - Remove time zone from Postgres event publication schema. 2023-09-21 23:28:53 +02:00
Oliver Drotbohm
f9f37feda8 GH-294 - Additional integration test for (Completed|Incomplete)EventPublications bean registration. 2023-09-21 12:11:31 +02:00
Oliver Drotbohm
2148328c5d GH-277 - Multicaster now honors listener condition.
We now reflectively invoke ApplicationListenerMethodAdapter.shouldHandle(…) when selecting event listeners to make sure that conditions defined in, for example, @TransactionalEventListener are considered before registering an event publication.
2023-09-21 08:56:30 +02:00
Oliver Drotbohm
ffb9495e15 GH-301 - Polishing.
Formatting, visibility. Some refactorings in Neo4jEventPublicationRepository.
2023-09-20 23:06:38 +02:00
Gerrit Meier
4e069b98ea GH-301 - Add Neo4j event publication repository. 2023-09-20 15:17:40 +02:00
Oliver Drotbohm
bf404a571c GH-248 - Add package-info.java for event externalization modules. 2023-09-19 11:04:47 +02:00
Oliver Drotbohm
9a25271946 GH-248 - Polishing.
Minor code cleanup.
2023-09-07 16:29:12 +02:00
Oliver Drotbohm
9b0062f354 GH-248 - Support to automatically externalize events.
We now allow externalizing application events to a variety of message brokers through the addition of Spring Modulith modules for Kafka, AMQP and JMS to a user project's classpath. Which events shall be externalized and how they're supposed to be routed to the message broker can be configured through either annotations or via a configuration API declared as Spring bean.

In case Jackson is on the classpath, we also add auto-configuration to use a Boot-configured ObjectMapper instance with the corresponding message broker client APIs to properly serialize and deserialize messages to JSON.
2023-09-07 16:29:10 +02:00
Oliver Drotbohm
971a143436 GH-294 - Introduce user API to deal with completed and incomplete event publications.
Introduce a new spring-modulith-events-api artifact to contain types that are supposed to be used by application code to deal with event publications. `EventPublication` was moved into that artifact and got everything non infrastructure related extracted from it's previous incarnation. That in turn has been renamed to `TargetEventPublication`.

`CompletedEventPublications` exposes API to allow purging completed publications either by a given predicate or age (in `Duration`). The interface is implemented by `DefaultEventPublicationRegistry` and thus subject for dependency injection into user code. It primarily delegates to the corresponding methods on `EventPublicationRepository` adapting the given `Duration`s to the `Clock` instance already held internally.

`IncompleteEventPublications` allows triggering the re-submission of incomplete publications by the same criteria as `CEP`. The interface is implemented by `PersistentApplicationEventMulticaster` and this subject for dependency injection into user code.

`EventPublicationRepository` now also allows publications to be deleted by identifiers. The existing implementations have been adapted and batch the requests for every 100 identifiers to prevent a list too large to run into limitations of the underlying data store.

Polished transactional metadata declaration in JPA- and MongoDB-based repository implementations.

Tightened nullability expressions here and there.
2023-09-04 15:24:37 +02:00
Oliver Drotbohm
ddaf34d4d8 GH-274 - Prepare next development iteration. 2023-08-21 07:00:02 -07:00
Oliver Drotbohm
6197d35937 GH-274 - Release version 1.0.0. 2023-08-21 06:59:57 -07:00
Oliver Drotbohm
39ce5346c6 GH-270 - Prepare next development iteration. 2023-08-16 08:05:46 +02:00
Oliver Drotbohm
2c5cedd1d1 GH-270 - Release version 1.0.0-RC2. 2023-08-16 08:05:46 +02:00
Oliver Drotbohm
0bfdb81d91 GH-265 - Use EVENT_PUBLICATION as table name for JPA to be consistent with JDBC. 2023-08-12 07:50:37 +02:00
Oliver Drotbohm
1e1ebb52ff GH-266 - Use event_publication collection for MongoDB event publications. 2023-08-12 07:50:37 +02:00
Oliver Drotbohm
967556d014 GH-264 - Only register EventPublicationRegistry if EventPublicationRepository present.
We now clearly separate between strict configuration, usable via @EnablePersistentDomainEvents and the auto-configuration for EventPublicationRegistry infrastructure. This allows using the core JAR in scenarios, in which no registry functionality is needed.
2023-08-12 07:49:43 +02:00
Oliver Drotbohm
0de48790d7 GH-261 - Avoid materializing JpaEventPublication to mark it completed.
We now simply issue an update query.
2023-08-10 00:19:35 +02:00
Oliver Drotbohm
1a84ae256f GH-260 - Prepare next development iteration. 2023-08-09 22:29:57 +02:00
Oliver Drotbohm
bf68d74756 GH-260 - Release version 1.0.0-RC1. 2023-08-09 22:29:56 +02:00
Oliver Drotbohm
31efdb31a2 GH-259 - Rename modulith.events package to modulith.events.core.
Allows us to eventually use the former as user-facing API package in a to-be-introduced API JAR.
2023-08-09 22:05:08 +02:00
Oliver Drotbohm
afe77711f1 GH-212 - Invert default for event republication to false.
This is to accommodate cluster setups and avoid multiple instances from resubmitting outstanding event publications concurrently.
2023-08-09 21:21:18 +02:00
Oliver Drotbohm
79e465c10e GH-251 - Improve efficiency of event publication completion.
Changed the EventPublicationRepository interface to allow marking an event as completed without having to materialize it in the first place. This allows us to get rid of CompletableEventPublication. EventPublication not exposes its identifier to make sure the stores can actually store the same id.

Introduced EventPublicationRegistry.deleteCompletedPublicationsOlderThan(Duration) to purge completed event publications before a given point in time.
2023-08-09 21:21:18 +02:00
Oliver Drotbohm
29b78a447e GH-206 - Polishing.
Javadoc in CompletableEventPublication.
2023-07-19 17:16:53 +02:00
Oliver Drotbohm
303a6802d8 GH-206 - Event Publication Registry now uses custom Clock instance if configured.
We now consider a user defined Clock bean in the application context to obtain the Instant to use as publication date for event publications.
2023-07-19 17:16:20 +02:00
Oliver Drotbohm
4fd17a80eb GH-239 - Polishing. 2023-07-18 19:03:15 +02:00
Oliver Drotbohm
2270ff39ec GH-240 - Republication of outstanding events can now be disabled.
Via the spring.modulith.republish-outstanding-events-on-restart (boolean) property.
2023-07-17 13:35:45 +02:00
Oliver Drotbohm
ff32c609fc GH-239 - Removed workaround after the downstream issue has been fixed in Spring Framework.
Related ticket: GH-186, spring-projects/spring-framework#30399.
2023-07-17 13:15:50 +02:00
Oliver Drotbohm
f8da2e86a8 GH-232 - Improve configuration property metadata in Event Publication Registry. 2023-07-05 17:34:23 +02:00
Oliver Drotbohm
fd478cbed5 GH-231 - Fix typo in property controlling the MongoDB Event Publication Registry's default transaction management. 2023-07-05 14:13:52 +02:00
Oliver Drotbohm
5e2da724da GH-199 - Prepare next development iteration. 2023-06-23 12:55:10 +02:00
Oliver Drotbohm
a74c4e582d GH-199 - Release version 1.0.0-M1. 2023-06-23 12:55:09 +02:00
Oliver Drotbohm
0dd2200302 GH-195 - Unnest test cases to make sure we run the right profiles.
Remove the nesting of the test classes as they will be executed without profiles activated.
2023-06-23 12:49:06 +02:00
Oliver Drotbohm
068916aa54 GH-195 - Remove support for legacy spring.modulith.jdbc-… namespace in JDBC-based event support. 2023-06-23 12:49:06 +02:00