We often come under such situation when we receive message from source system which are not in proper sequence but target system need to receive that in proper sequence. To resolve this we need to re-sequence the messages and process them in proper sequence. Re-sequencing is term used when we need to process incoming messages in sequence which are not coming in proper sequence. Design and developer need to think on this re-sequencing when they encounter such requirement as e described above. E.g. suppose we are receiving sales orders from source system, sales order contain one field with the name sales order number, suppose source system sends sales order in this sequence ( 1, 4,3,2,5,6,7 ) but target system need sales order in this sequence (1,2,3,4,5,6,7) , in this case we need to do re-sequencing of message.
In 11g version of Oracle SOA Suite, re-sequencing was there in Mediator component but this feature was not available for BPEL and Service Bus. In 12c release, this feature is provided for service bus. We can set this feature either at pipeline level or at operation level. In this post, we will discuss on that. We will only discuss about pipeline level re-sequencer.
We have three types of re-sequencing in Service Bus.
Standard: This sequencer is used when incoming message contain numeric identifier. This numeric identifier is termed as Sequence Id. We may specify message Group also, that means incoming order can be Sales Order or purchase order, in this case we will have separate group for both Sales Order and purchase order. When source system send out of order messages then it store out-of-order message until complete order is received this is based on sequence Id.
FIFO: This sequencer works based on message arrival time. Whichever message received first, will be processed first. Here you need to specify only Group. So all the messages which are there in one group processed based on message receive time.
Best Effort: It is used when we receive large number of messages in a short period of time and cannot provide information to the re-sequencer about the identifier to use for sequencing. Typically, the identifier used for sequencing in such scenarios is of a dateTime type or numeric type.
To configure re-sequencer in service bus, double click on the pipeline and choose configuration tab. Click on resequencer, to enable the resequencer check the “Enable Resequencer” checkbox. Once you enable the resequencer, you need to choose the resequencer level. Resequencer level can be set either pipeline or operation. Also choose the type of resequencer which you need to use.
For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.