Class RoutingKeySequencingPolicy
java.lang.Object
org.axonframework.messaging.core.sequencing.RoutingKeySequencingPolicy
- All Implemented Interfaces:
SequencingPolicy<CommandMessage>
RoutingKeySequencingPolicy that requires sequential processing of commands targeting the same
routing key.
For a null or empty routing key of a CommandMessage the policy returns
Optional.empty().
This policy only applies for command messages.
- Since:
- 5.0.3
- Author:
- Jakob Hatzl
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final RoutingKeySequencingPolicySingleton instance of theRoutingKeySequencingPolicy -
Method Summary
Modifier and TypeMethodDescriptionsequenceIdentifierFor(@NonNull CommandMessage message, @NonNull ProcessingContext context) Returns the sequence identifier for the givenmessage.
-
Field Details
-
INSTANCE
Singleton instance of theRoutingKeySequencingPolicy
-
-
Method Details
-
sequenceIdentifierFor
public Optional<Object> sequenceIdentifierFor(@NonNull CommandMessage message, @NonNull ProcessingContext context) Description copied from interface:SequencingPolicyReturns the sequence identifier for the givenmessage. When two messages 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 message.The
Optional#empty()should only be returned when the policy cannot determine a sequence identifier for the given message. This typically happens when the policy is not applicable for the specific message type. WhenOptional#empty()is returned, it is up to the component using this policy to provide a default behavior, use another policy, throw an exception or react in any other way - as appropriate.- Specified by:
sequenceIdentifierForin interfaceSequencingPolicy<CommandMessage>- Parameters:
message- the message for which to get the sequencing identifier.context- the processing context in which the message is being handled. There might be limitations to the instance of theProcessingContextdepending on where theSequencingPolicyis being applied. When handling Events for example, 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 message, or
Optional#empty()if this policy cannot determine a sequence identifier for the given message.
-