Как правило, WMQ доставляет сообщения в том порядке, в котором они были получены. Однако на это могут влиять несколько факторов ...
- Если очередь поставлена в приоритет вместо доставки FIFO и сообщения приходят с разными приоритетами, они будут доставлены «не в порядке».
- Различают произведенный заказ и доставленный заказ. Если сообщения создаются на удаленном QMgr и существует несколько путей к локальному QMgr, сообщения могут поступать не по порядку.
- Различие в постоянстве - если сообщения создаются на удаленном QMgr и имеют различное постоянство, непостоянные сообщения могут поступать быстрее, чем постоянные, особенно с установленным каналом NPMSPEED (FAST).
- Несколько читателей / писателей - любая зависимость от последовательности подразумевает отправку одному производителю одному потребителю по одному пути. Любая избыточность у производителей, потребителей или путей между ними может привести к тому, что сообщения будут доставлены не по порядку.
- Синхронизация - чтобы сохранить последовательность, ВСЕ сообщения должны быть написаны и использованы в точке синхронизации, иначе ВСЕ должны быть записаны и использованы вне точки синхронизации.
- Селекторы - они специально предназначены для доставки сообщений не по порядку относительно контекста всех сообщений в очереди.
- Группы сообщений - получение сгруппированных сообщений обычно ожидает, пока не появится вся группа. Если группы чередуются, сообщения доставляются не по порядку.
- DLQ - если целевая очередь заполняется, сообщения могут доставляться в DLQ. По мере опустошения целевой очереди сообщения начинают туда возвращаться. Если очередь близка к емкости, сообщения могут чередоваться между целевой очередью и DLQ.
Таким образом, когда MDB получает сообщения не по порядку, может быть причина любой из этих вещей, или даже нескольких из них в комбинации. Либо устраните зависимость от последовательности сообщений (лучший выбор), либо вернитесь к дизайну и примирите все факторы, которые могут привести к обработке вне последовательности.