Неопределенный - 3 basicConsume
операции выполняются на потребительском канале (если вы увеличиваете количество одновременных потребителей на 3 потребителя). Операции basicConsume
обычно выполняются в порядке определения очередей (во всех случаях, если одна или несколько очередей временно «отсутствуют»).
Брокер отправляет сообщения из каждой очереди до prefetchCount
(basicQos
) для каждой очереди (по умолчанию 1).
Я не знаю фактического алгоритма, используемого брокером в этом сценарии, но вы должны считать его неопределенным - Spring AMQP доставляет их слушателю (слушателям) в порядке, полученном от брокера.
EDIT
Я просто побежал тест (2 очереди каждый с 2 существующих сообщений), и они были доставлены по круговой - q1m1, q2m1, q1m2, q2m2 когда упреждающей был 1.
Когда prefetch установлен в 4, я вижу q1m1, q1m2, q2m1, q2m2.
Конечно, когда очереди пустые, сообщения обычно поступают в том порядке, в котором они поступают к брокеру.
EDIT2
См Consumer Prefetch.
Spring AMQP использует вариант basicQos
без глобального arg, поэтому используется значение по умолчанию (false
). Это означает, что предварительная выборка предназначена для каждого потребителя.