2016-07-26 3 views
1

Мы используем SimpleMessageListenerContainer с (максимальным) количеством пользователей как 75. У нас есть прецедент, где нам нужно динамически подписываться и не подписаться с некоторых очередей, поэтому мы используем addQueueNames() и removeQueueNames(). Когда количество пользователей составляет 75, метод addQueueNames() занимает около 15 секунд. В настоящее время у нас около 200 очередей. Мы хотели очень часто добавлять и удалять очереди у слушателя, так что есть ли у нас другой способ уменьшить это время?Использование addQueueNames в SimpleMessageListenerContainer занимает больше времени

ответ

0

Когда очереди добавляются или удаляются, в настоящее время мы должны отменить текущих потребителей и повторно потреблять из нового списка очередей.

Функция не была разработана для быстрого изменения списка очередей, особенно с большим количеством очередей.

Возможно, вы обнаружите, что некоторые вещи более эффективны, если вы используете несколько контейнеров, каждый из которых содержит подмножество общего списка очередей, чтобы избежать опрокидывания всех потребителей для каждого изменения.

Для 2.0 (в следующем году, но мы, вероятно, веху в падении) мы планируем полностью переписывать контейнера слушателя, чтобы воспользоваться некоторыми изменениями в библиотеке RabbitMQ клиента see this answer и associated JIRA issue для некоторых больше информации.

Возможно, мы могли бы сделать изменение списка очередей более эффективным как часть этой перезаписи; не стесняйтесь добавлять комментарии к JIRA, чтобы мы не забыли.

+0

Спасибо @GaryRussell. Я прокомментировал вопрос Джиры. – Kot

+0

'2.0' для весенней загрузки уже готов? –

+0

2.0.0.M2 (этап 2) теперь доступен; M3 выйдет на следующей неделе, финальный релиз состоится летом (в июне). –

Смежные вопросы