Я только что ответил вам в rabbitmq-users
Группе Google.
Я могу ответить на вопросы о Spring.
В чем разница и связь между CachingConnectionFactory и PublisherConnectionFactory и RabbitConnectionFactory?
CCF является основным заводом; по умолчанию. его единственное соединение является общим для всех компонентов (но у него есть режим кэширования, поддерживающий несколько соединений). PCF - это необязательный CCF, который можно использовать для публикации (когда RabbitTemplate.usePublisherConnection
имеет значение true). Рекомендуется разрешить потребителям продолжать потреблять, когда издатели заблокированы.
CCF executorService (если имеется) передается в RCF.newConnection (). ChannelExecutor является внутренним исполнителем, который используется, только если издатель подтверждает, что включены; он используется для отсрочки запроса на закрытие канала до получения подтверждения издателя (или тайм-аута).
Зачем нам нужно так много разных пулов исполнителей? В чем разница между ними всеми? Разделяют ли эти классы свои пулы потоков / исполнители?
CCF executorService (если присутствует) передается в RCF.newConnection()
.
Когда соединение открыто, к которому выделен ли пул потоков?
CCF executorService (если имеется) передается в RCF.newConnection()
. В противном случае amqp-клиент использует своего собственного исполнителя.
Когда канал открыт, для какого пула потоков он выделен? Используют ли операции Publi sh и потребления разные пулы потоков?
Если RabbitTemplate.usePublisherConnection
имеет значение true, а PCF имеет другого исполнителя.
Как передать в моя собственная реализация исполнителя или другая конфигурация, каждый из упомянутых исполнителей?
Существуют методы установки для двух исполнителей CCF. Если вы хотите, чтобы в PCF был другой исполнитель, используйте CCF.getPublisherConnectionFactory()
и вызовите его установщик.
Было бы хорошей идеей объединить / объединить некоторых или всех исполнителей?