Неопределено - 3 basicConsume
операции выполняются на канале потребителя (если вы увеличиваете concurrentConsumers, это 3 на потребителя). Операции basicConsume
обычно выполняются в том порядке, в котором определены очереди (во всех случаях, если только одна или несколько очередей временно не "отсутствуют").
Брокер будет отправлять сообщения из каждой очереди до prefetchCount
(basicQos
) для каждой очереди (по умолчанию 1).
Я не знаю фактического алгоритма, используемого брокером в этом сценарии, но вы должны предположить, что он неопределен - Spring AMQP доставит их слушателю (слушателям) в порядке, полученном от брокера.
ИЗМЕНИТЬ
Я только что провел тест (2 очереди с 2 существующими сообщениями в каждой), и они были доставлены циклически — q1m1, q2m1, q1m2, q2m2, когда предварительная выборка была 1.
С предварительной выборкой, установленной на 4, я вижу q1m1, q1m2, q2m1, q2m2.
Конечно, когда очереди пусты, сообщения обычно поступают в том порядке, в котором они поступают к брокеру.
ИЗМЕНИТЬ2
См. раздел Предварительная выборка потребителя.
Spring AMQP использует вариант basicQos
без глобального аргумента, поэтому используется значение по умолчанию (false
). Это означает, что предварительная выборка выполняется для каждого потребителя.
person
Gary Russell
schedule
09.05.2016