Это фундаментальная проблема, связанная с заказанной доставкой - где-то в вашей системе вам нужно свести все к одному потоку.Это неизбежно.
Если вы решите это сделать, это может существенно повлиять на пропускную способность.Вы можете сделать весь свой процессор сообщений однопоточным.Это обеспечит поддержание порядка, но за счет низкой пропускной способности.
Однако, есть способ, которым вы можете обрабатывать сообщения одновременно, но тогда вам нужно как-то собрать их в правильном порядке снова.Существует шаблон проектирования интеграции под названием Resequencer - http://eaipatterns.com/Resequencer.html.
Однако шаблон повторного секвенсора, который основан на том, что вы можете пометить каждое сообщение отметкой времени или порядковым номером на пути в вашу систему, еслив ваших сообщениях уже нет ничего, что указывало бы на порядок.
Кроме того, является ли заказанная доставка требованием для всего набора сообщений весь , поступающего из очереди?Например, может случиться так, что только некоторые из ваших сообщений должны быть доставлены по порядку.
Или может быть, что вы можете сгруппировать свои сообщения в «наборы» под коррелирующим идентификатором - в каждом установленном порядке необходимо поддерживать, но вы все равно можете выполнять параллельную обработку на основе «для каждого набора».