Merge Parallel Steps
This handler (com.rierino.handler.MergeEventHandler) provides ability to merge parallel saga steps in distributed flow executions.
Last updated
This handler (com.rierino.handler.MergeEventHandler) provides ability to merge parallel saga steps in distributed flow executions.
Last updated
merge.locker
Fully qualified class name for the locker to use for thread safety.
com.rierino.state.lock.RedisStateLocker
-
merge.action
Whether merge completion should delete, update or ignore state record
delete
update
MergeEventHandler also supports timer and timeout parameters as in .
Merges multiple parallel running branches in a saga flow, storing merge status in a state manager. Each merge instance is identified by a unique taskId, and contributing branches are identified by their mergeIds. When all required merge ids are received, the merge step continues.
domain
Name of state manager for coordinating merge state
search_merge
-
With event metadata parameters as:
mergePath
results
-
requiredMergeIds
Comma separated list of merge ids that are required to complete the merge
1,2,3
-
mergeIdPath
Json path which defines id for merge branch
id
mergeId
taskIdPath
mainId
taskId
Merge handler also allows timing out merge tasks, in case some branches do not send their results in time. For this purpose, all timeout roles and commands of the TaskEventHandler are also supported.
Current state of a merge activity is stored in the state manager with the following details:
id
Unique merge id
123
data.event
{...}
data.requiredMergeIds
Comma separated list of mergeids required to complete the operation
1,2,3
data.waitingMergePaths
Array of mergeids still waiting to be completed
[1,3]
data.mergeElements
Current contents of the merge elements
{...}
data.timeout
Epoch time of the timeout for current operation
1686154822136
data.isProcessed
false