Blocked Queues and Processing Statuses
Queues preserve the order in which service operations are processed.
The pub/sub system guarantees that items are processed in the order they are sent. If a service operation has a status of Error, Timeout, or Edited, the service operation queue becomes blocked and no processing occurs until you resolve the problem with the service operation.
For publications, queues are partitioned in queues by sub queues.
For publication contracts, queues are further partitioned into queues by sub queue and target node. If a queue is ordered, items in that queue and in the same queue are processed in the order sent. The dispatcher does not begin processing an item until all items ahead of it in the queue have the status Done or Cancelled. An item with a status of Error, Timeout, or Edited blocks all items behind it in the same queue. If the remote node is unavailable, the dispatcher does not attempt to process the contract and the queue is blocked until the remote node becomes available. That is why publication contracts are partitioned by target node.
If a queue is unordered, an item (such as the publication, publication contract, or subscription contract) never blocks another item. All items are processed in parallel.