Class MetadataSequencingPolicy
java.lang.Object
org.axonframework.messaging.eventhandling.sequencing.MetadataSequencingPolicy
- All Implemented Interfaces:
SequencingPolicy
A
SequencingPolicy implementation that extracts the sequence identifier from the EventMessage's
Metadata, based on a given metadataKey. In the absence of the given
metadataKey on the Metadata, the Optional.empty() is returned.- Since:
- 4.6.0
- Author:
- Lucas Campos
-
Constructor Summary
ConstructorsConstructorDescriptionMetadataSequencingPolicy(String metadataKey) Instantiate aMetadataSequencingPolicy. -
Method Summary
Modifier and TypeMethodDescriptiongetSequenceIdentifierFor(EventMessage event, ProcessingContext context) Returns the sequence identifier for the givenevent.
-
Constructor Details
-
MetadataSequencingPolicy
Instantiate aMetadataSequencingPolicy.Will assert that the
metadataKeyis notnulland will throw anAxonConfigurationExceptionif this is the case.- Parameters:
metadataKey- The key to be used as a lookup for the property to be used as the Sequence Policy.
-
-
Method Details
-
getSequenceIdentifierFor
public Optional<Object> getSequenceIdentifierFor(@Nonnull EventMessage event, @Nonnull ProcessingContext context) Description copied from interface:SequencingPolicyReturns the sequence identifier for the givenevent. When two events have the same identifier (as defined by their equals method), they will be executed sequentially. AOptional#empty()value indicates that there are no sequencing requirements for the handling of this event.The
Optional#empty()should ONLY be returned when the policy cannot determine a sequence identifier for the given event. This typically happens when the policy is not applicable for the specific event type. WhenOptional#empty()is returned, it is up to the component using this policy to provide a default behavior, use another policy, or throw an exception / react in any other way - as appropriate.- Specified by:
getSequenceIdentifierForin interfaceSequencingPolicy- Parameters:
event- The event for which to get the sequencing identifier.context- The processing context in which the event is being handled. This instance of theProcessingContextdoesn't allow you to register phases actions by for exampleProcessingLifecycle.on(org.axonframework.messaging.core.unitofwork.ProcessingLifecycle.Phase, java.util.function.Function<org.axonframework.messaging.core.unitofwork.ProcessingContext, java.util.concurrent.CompletableFuture<?>>)or retrieving components byApplicationContext.component(java.lang.Class<C>).- Returns:
- A sequence identifier for the given event, or
Optional#empty()if this policy cannot determine a sequence identifier for the given event.
-