Пожалуйста, обратитесь к свойству RESCANINT различных реализаций WMQ Connection Factory. Из руководства:
Когда получатель сообщения в двухточечном домене использует сообщение
селектор, чтобы выбрать, какие сообщения он хочет получить, WebSphere
MQ JMS-клиент ищет в очереди WebSphere MQ подходящие сообщения в
последовательность, определенная атрибутом MsgDeliverySequence
очередь. Когда клиент находит подходящее сообщение и доставляет его
потребитель, клиент возобновляет поиск следующего подходящего сообщения
от его текущей позиции в очереди. Клиент продолжает поиск
таким образом, пока очередь не достигнет конца очереди или пока
интервал времени в миллисекундах, определяемый значением
срок действия этого свойства истек. В каждом случае клиент возвращается к
начало очереди для продолжения поиска и новый интервал времени
начинается.
Идея состоит в том, что в очень занятой очереди с доставкой по приоритету некоторые сообщения с более высоким приоритетом могут отображаться в очереди выше, чем текущая позиция селектора. Теоретически, сообщение с более высоким приоритетом должно использоваться в первую очередь, но потребитель не увидит его, если не будет искать в голове очереди. Курсор сбрасывается на начало очереди либо по достижении конца, либо по достижении RESCANINT. Настройка RESCANINT позволяет настроить то, насколько быстро вы хотите, чтобы селектор находил эти сообщения с более высоким приоритетом.
RESCANINT не относится к доставке FIFO. Другой случай, когда это может произойти, - это если несколько потоков с перекрывающимися критериями выбора. В этом случае один поток может держать сообщение под блокировкой и затем освободить его. Хотя сообщение может быть пригодным для второго потока, если этот поток уже прошел эту позицию в очереди, ему нужно нажать на конец очереди или истечь RESCANINT, чтобы перезапустить курсор, чтобы найти сообщение.
Интервал повторного сканирования в миллисекундах и по умолчанию равен 5000. Любое положительное целочисленное значение принимается, хотя слишком низкое значение приведет к сбою, так как курсор постоянно сбрасывается, прежде чем какие-либо сообщения могут быть использованы.
На практике вы будете получать сообщения по порядку, если очередь FIFO, и у вас есть только один читатель в очереди, для которого подходят сообщения, независимо от того, какой параметр RESCANINT установлен. Если порядок сообщений должен строго сохраняться, существуют некоторые дополнительные соображения, как описано в Последовательный поиск сообщений . Они сводятся к сообщениям, имеющим только один путь от производителя к потребителю при рассмотрении каналов, точек синхронизации и т. Д.