Как организовать очередь сообщений так, что бы каждое след. сообщение передавалось только после того, как обработано предыдущее?
Из текста не до конца понятно, Вы хотите, чтобы была очередь или sender должен выполняться каждый раз для нового сообщения? Если очередь, то обрабатывать сообщения по одному можно, но только если получатель один. В протоколе AMQP можно вручную получать сообщения по одному - basic_get, или выставить количество неподтвержденных сообщений в 1 и подтверждать обработку каждого.
Rabbitmq работает в таком режиме если 1 consumer. Если больше то нет. Чуть серьёзнее пример - Kafka. Там если настроить 1 партицию на топик то будет ожидаемый результат