You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/docs/antora/modules/ROOT/pages/events.adoc
+10-7Lines changed: 10 additions & 7 deletions
Original file line number
Diff line number
Diff line change
@@ -393,9 +393,9 @@ The event externalization performs three steps on each application event publish
393
393
394
394
1. _Determining whether the event is supposed to be externalized_ -- We refer to this as "`event selection`".
395
395
By default, only event types located within a Spring Boot auto-configuration package and annotated with one of the supported `@Externalized` annotations are selected for externalization.
396
-
2. _Mapping the event (optional)_ -- By default, the event is serialized to JSON using the Jackson `ObjectMapper` present in the application and published as is.
397
-
The mapping step allows developers to either customize the representation or even completely replace the original event with a representation suitable for external parties.
398
-
Note that the mapping step precedes the actual serialization of the to be published object.
396
+
2. _Preparing the message (optional)_ -- By default, the event is serialized as is by the corresponding broker infrastructure.
397
+
An optional mapping step allows developers to customize or even completely replace the original event with a payload suitable for external parties.
398
+
For Kafka and AMQP, developers can also add headers to the message to be published.
399
399
3. _Determining a routing target_ -- Message broker clients need a logical target to publish the message to.
400
400
The target usually identifies physical infrastructure (a topic, exchange, or queue depending on the broker) and is often statically derived from the event type.
401
401
Unless defined in the `@Externalized` annotation specifically, Spring Modulith uses the application-local type name as target.
@@ -481,7 +481,8 @@ class ExternalizationConfiguration {
@@ -513,7 +515,8 @@ Convenience methods to easily select events by type, by packages, packages and a
513
515
Also, a shortcut to define selection and routing in one step.
514
516
<3> We define a mapping step for `SomeEvent` instances.
515
517
Note that the routing will still be determined by the original event instance, unless you additionally call `….routeMapped()` on the router.
516
-
<4> We finally determine a routing key by defining a method handle to extract a value of the event instance.
518
+
<4> We add custom headers to the message to be sent out either generally as shown or specific to a certain payload type.
519
+
<5> We finally determine a routing key by defining a method handle to extract a value of the event instance.
517
520
Alternatively, a full `RoutingKey` can be produced for individual events by using the general `route(…)` method on the `Router` instance returned from the previous call.
0 commit comments