Как выполнить более одного метода Spring Bean при запуске приложения - PullRequest
0 голосов
/ 11 сентября 2011

У меня есть фасоль с 4 очередями блокировки. Каждой очереди назначается метод (с именем processQueueX ()), который вызывает метод take () для этой очереди и обрабатывает извлеченный объект из очереди.

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

Метод init также не работает, так как он работает в одном потоке, каждый метод имеет бесконечный цикл для бесконечной обработки очереди.

Есть ли способ декларативно вызывать эти методы из конфигурационного файла Spring способом, аналогичным пространству имен задачи? Или программно?

Tnx

Ответы [ 2 ]

0 голосов
/ 11 сентября 2011

Будет 23,4.Абстракция Spring TaskExecutor help?

Если в примере есть класс MessagePrinterTask, у вас будет аналогично, но ваш метод run() будет обращаться к одной из очередей.Вы должны настроить конфигурацию Spring для внедрения одной из очередей в задачу, поэтому в зависимости от того, насколько похожи ваши очереди, вы можете использовать одну и ту же задачу Runnable.

0 голосов
/ 11 сентября 2011

Я думаю, что использование планировщика неплохая идея - использовать планировщик кварта с простым триггером, поэтому кварц будет выполнять многопоточность за вас, а tomcat не будет задействован. И сконфигурировать кварц с достаточным количеством потоков.

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