Is it possible to use Concurrent Document Dispatching for a trigger and still guarentee that documents are processed in the order in which they are received?
I know this is possible with Serial Document Dispatching, but that influence the performance badly. I need another solution.
No it is not possible. This is equivalent to spawning a bunch of threads to perform some work that should all complete in the order that each thread was created/started. Some type of synchronization between all the threads is required to ensure ordered processing and completion–which is equivalent to serial dispatching.
What data are contained in the documents that requires you to process each one in order? Is there some relation between these documents?
These documents are inserts or updates of Purchase Orders. If there are 2 update documents and the second one arrives before the first one , then a wrong update will made. First the second update will be proccessed after then the first update will be proccessed which is not allowed.
You are guaranteed that the documents are delivered in order as long as they are generated by the same publisher. The only way you can ensure that they’re processed in order to is perform some type of synchronization though–the easiest being serial dispatching. Otherwise you will need to create synchronization code to ensure that updates are not processed before creates.
How close (in time) are the create and update operations?
It was a stress test and the update operations had a time interval of 1,5 seconds.
I’ve read the following in a wM manual;
“Additionally, for concurrent triggers, the Integration Server does not guarantee that documents are processed in the order in which they are received.”
At last we have decide to use serial dispatching.