Pamod Sylvester created SYNAPSE-1130:
----------------------------------------
Summary: Introduce Resequence Message Store
Key: SYNAPSE-1130
URL: https://issues.apache.org/jira/browse/SYNAPSE-1130
Project: Synapse
Issue Type: Sub-task
Components: Core
Affects Versions: 3.0.1
Reporter: Pamod Sylvester
Assignee: Isuru Udana
Fix For: FUTURE
[Resequencer|[https://www.enterpriseintegrationpatterns.com/patterns/messaging/Resequencer.html]
] will consolidate out of order messages and ensure that the messages are
rearranged to the correct order before sending it out.
h1. Description
Resequencer can have two forms,
h3. Batch Resequencer
# Order identifying criteria (based on message body expression etc,
header)/this should be extensible
# Resequencing delimiters (batch size, timeout)
h3. Stream Resequencer
# Order identifying criteria - header “seqnum”
# Resequencing delimiters - gap detection/timeout
Gap detection - This will ensure that for a given sequence number say 3, the
predecessor is 2 and the successor is 4. If this doesn’t match it will wait
until the matching predecessor arrives before sending the message out.
h1. Resequence Message Processor vs Resequence Message Store
At present the resquence processor will introduce the following discrepancies,
# Messages will be peeked and polled from volatile memory, hence reliability
guarantees cannot be provided
# The algorithm assumes once a message is picked/peeked from store the next
message could be peeked without having to remove the current message. This
operation would not resonate with queuing architectures such as JMS (which
could be introduced in future; for message stores).
# Implementation is based on stream sequencing. Batch sequencing is not
supported
Hence it's important to note; for EIPs such as resequencer a more non volatile
store is required. Further options such as batch resequencing is required.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]