Duplicate message processing
Each sequence number within a sequence group must be unique.
If a Resequence node receives a message containing a sequence number that has already been processed in the current sequence group, an exception is thrown (BIP4821) and the duplicate message is propagated to the Failure terminal. An exception occurs only if the duplicate message arrives after the first message with that sequence number has arrived and before the sequence group closes.
For example, assume that you have a Resequence node with the following
properties:
- Path to sequence number property with a value of /doc/seq
- Path to sequence group identifier property with a value of /doc/grp
- Start of sequence definition property set to Literal with a value of 1
- End of sequence definition property set to Literal with a value of 3
The following messages arrive at the Resequence node:
<doc><grp>a<grp><seq>1</seq></doc>
<doc><grp>a<grp><seq>2</seq></doc>
<doc><grp>a<grp><seq>2</seq>/doc>
<doc><grp>a<grp><seq>3</seq></doc>
<doc><grp>a<grp><seq>2</seq></doc>
<doc><grp>a<grp><seq>1</seq></doc>
<doc><grp>a<grp><seq>3</seq></doc>
The following messages are propagated to the Out terminal:
<doc><grp>a<grp><seq>1</seq></doc>
<doc><grp>a<grp><seq>2</seq></doc>
<doc><grp>a<grp><seq>3</seq></doc>
<doc><grp>a<grp><seq>1</seq></doc>
<doc><grp>a<grp><seq>2</seq>/doc>
<doc><grp>a<grp><seq>3</seq></doc>
The second occurrence of the input message with sequence number
2 causes an exception to be thrown and is propagated to the Failure
terminal:
<doc><grp>a<grp><seq>2</seq>/doc>