из очереди берутся отчёты и отправляются серверу №1 для проверки и записи
Ага, вот это место, в котором решается, оффлайн сервер№1 или онлайн.
Потому что сервер №1 принимает всё последовательно
А это главное требование.
Вариант номер 1.
Одна общая очередь, один воркер. Если сервер №1 оффлайн, воркер просто останавливает свою работу до тех пор, пока сервер не вернется. Для текущего сообщения надо выполнить amqp reject, тогда оно вернется в начало очереди.
Порядок сообщений соблюден, но есть единая точка отказа, она же бутылочное горлышко производительности (впрочем, зависит от скорости обработки отчетов)
Вариант №2.
Одна общая очередь, много воркеров. Схема та же, сервер оффлайн - остановка обработки. Онлайн - возобновление. Узкое место по производительности и точка отказа исчезают, но два последовательных отчета от одного компьютера могут попасть одновременно на соседние воркеры, т.е. требование про "последовательно" может не выполняться.
Вариант №3.
HashRing и прочие алгоритмы хеширования, которые позволяют сократить число очередей и на каждую очередь повесить свой воркер. Необходимость ручной балансировки нагрузки, точки отказа на отдельных очередях.
Как-то так. Сходу придумать, как заставить несколько воркеров обрабатывать одну очередь с сохранением порядка сообщений я не придумал.