Я ищу лучший способ для потоковой передачи клиента C ++ Apache QPID для оптимальной производительности при большом трафике сообщений.
Наш брокер будет включать 3 обмена, каждый с 2 однонаправленными очередями.В 3 «восходящих» очередях будет значительный трафик, на который будет направлять клиент c ++.
Существует несколько редко документированных классов, используемых для взаимодействия с брокером QPID.Соединение, Сеанс, Отправитель и Получатель.Соединения предоставляют сеансы, а сеансы предоставляют отправителей или получателей.После прочтения различной документации QPID мне неясно, какой из этих объектов является поточно-ориентированным (или не поточно-ориентированным), или который приводит к созданию потока в клиентской библиотеке.Согласно QPID FAQ, многопоточность в брокере происходит на уровне сеанса.Не упоминается, где это происходит у клиента.
В клиентском приложении будет несколько контекстов потока, которые должны будут передавать данные в одну из очередей восходящей линии связи.Лучше ли иметь пул сеансов, подключений или отправителей, которые будут обслуживать несколько контекстов?Или QPID имеет встроенную оптимизацию для этого сценария, что может означать, что 1 общего отправителя будет достаточно?
Цель состоит в том, чтобы не иметь узкополосного узкого места где-либо с одной резьбой, а иметь возможность эффективно масштабировать параллельно в соответствии с имеющейся нагрузкой трафика.