я ударился головой о стену об этом в течение всего дня, очень раздражает, но я сейчас поставить этот вопрос к сообществу, надеюсь, кто-то может помочь мнеНесколько Слушателей в одном RabbitListenerContainer не работает
Это мой конфигурации:
<rabbit:connection-factory id="connectionFactory"
virtual-host="****" username="****" password="****" />
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" />
<rabbit:admin connection-factory="connectionFactory" />
<rabbit:queue name="a" durable="true" />
<rabbit:queue name="b" durable="true" />
<rabbit:listener-container prefetch="10"
task-executor="taskExecutor" acknowledge="auto"
transaction-size="10" connection-factory="connectionFactory"
concurrency="10" channel-transacted="false"
message-converter="jsonMessageConverter" requeue-rejected="false">
<rabbit:listener id="a-listener" ref="Abean"
method="listen" queue-names="a" />
<rabbit:listener id="b-listener" ref="Bbean"
method="listen" queue-names="b" />
</rabbit:listener-container>
<bean id="Abean"
class="****" />
<bean id="Bbean"
class="****" />
<rabbit:direct-exchange name="****"
durable="true">
<rabbit:bindings>
<rabbit:binding queue="a" key="a" />
<rabbit:binding queue="b"
key="b" />
</rabbit:bindings>
</rabbit:direct-exchange>
После запуска контекст, никаких ошибок, не представляется, что только первый слушатель (а-слушатель) настроен будут иметь потребителей, подключенных к очереди (а) это инте но другой слушатель, нет ничего, ни один пользователь, подключающийся к очереди (б).
В чем проблема с этой конфигурацией?
Я использую последнюю пружинный AMQP (1.5.4.Release)
Привет, Гэри, спасибо за помощь, мой исполнитель задач настроен на размер пула пула 5 и максимальный размер пула 50 –
Привет, Гари, я нашел проблему, я действительно думаю, что это ошибка, слишком обманчивая для моего нравится: Моя конфигурация была (2 очереди): потребитель параллелизм = 5 taskexecutor.core.pool.size = 5 taskexecutor.max.pool.size = 50 кажется, что задача исполнитель бассейн не будет масштаб превышает 5 для удовлетворения потребностей потребителей в другой очереди, то есть первая конфигурация очереди будет иметь 5 потребителей, а следующая не получит ни одного. Только когда я нажимаю taskexecutor.core.pool.size до 10, другой набор потребителей фактически запускается и начинает слушать очередь. Ваши мысли ... –
Из [документации Spring AMQP] (http://docs.spring.io/spring-amqp//reference/html/_reference.html#_threading_and_asynchronous_consumers), 'Если не настроено, SimpleAsyncTaskExecutor используемый. Если используется объединенный исполнитель, убедитесь, что размер пула достаточен для обработки настроенного параллелизма. '. Из javadoc 'ThreadPoolExecutor':' Если в потоках maxPoolSize больше, чем corePoolSize, но меньше , новый поток будет создан только в том случае, если очередь заполнена. 'Если у вас нет ограниченной очереди в исполнителе, вы никогда не будете получить больше потоков. Размер ядра должен быть достаточно большим. –