Ответ 1
Я нашел это на веб-сайте rabbitmq, он находится внизу, поэтому я процитировал соответствующую часть ниже.
Версия tl; dr заключается в том, что у вас должно быть 1 соединение для каждого приложения и 1 канал на поток. Надеюсь, что это поможет.
Соединения
Соединения AMQP обычно долговечны. AMQP - приложение который использует TCP для надежной доставки. Соединения AMQP использовать аутентификацию и может быть защищена с использованием протокола TLS (SSL). Когда приложение больше не нужно подключать к брокеру AMQP, оно должен изящно закрыть соединение AMQP, а не резко закрывая базовое TCP-соединение.
Каналы
Некоторым приложениям требуется несколько подключений к брокеру AMQP. Однако нежелательно, чтобы многие TCP-соединения открывались на то же время, потому что это расходует системные ресурсы и делает это больше сложно настроить брандмауэры. Соединения AMQP 0-9-1 - это мультиплексированные с каналами, которые можно рассматривать как "легкие соединения, которые используют одно TCP-соединение".
Для приложений, которые используют несколько потоков/процессов для обработки, очень часто открывается новый канал для потока/процесса, а не разделяйте каналы между ними.
Связь на определенном канале полностью отделена от связь на другом канале, поэтому каждый метод AMQP также содержит номер канала, который клиенты используют, чтобы выяснить, какой канал метод предназначен для (и, следовательно, какой обработчик события должен быть вызван, например).
Рекомендуется, чтобы в потоке было 1 канал, хотя они потокобезопасны, поэтому у вас может быть несколько потоков, отправляемых по одному каналу. Что касается вашего приложения, я бы предположил, что вы придерживаетесь 1 канала на поток, хотя.
Кроме того, рекомендуется иметь только 1 потребитель на канал.
Это только рекомендации, поэтому вам нужно будет провести некоторое тестирование, чтобы увидеть, что лучше всего подходит для вас.
В этом потоке есть некоторые идеи здесь и здесь.
Несмотря на все эти рекомендации этот пост, предположим, что это скорее всего не повлияет на производительность благодаря наличию нескольких подключений. Хотя это не является специфическим, говорит ли речь о стороне клиента или сервера (кролика). С одной точки зрения, конечно, он будет использовать больше системных ресурсов с большим количеством подключений. Если это не проблема, и вы хотите иметь большую пропускную способность, возможно, будет лучше иметь несколько соединений, поскольку этот пост предполагает, что несколько подключений позволят вам увеличить пропускную способность. Причина в том, что, даже если есть несколько каналов, через соединение только одно сообщение проходит через соединение. Поэтому большое сообщение блокирует все соединение, или многие несущественные сообщения на одном канале могут блокировать важное сообщение в том же соединении, но с другим каналом. Снова ресурсы - проблема. Если вы используете всю ширину полосы пропускания с одним соединением, то добавление дополнительного соединения не будет увеличивать производительность по сравнению с двумя каналами в одном соединении. Также каждое соединение будет использовать больше памяти, процессоров и дескрипторов файлов, но это может не быть проблемой, хотя может быть проблемой при масштабировании.