Лучший способ реализовать фоновый сервис в Grails

Я много искал и знаю о grails-executor и JMS-плагине. Мне нужен совет о том, как лучше всего реализовать длительную (пока работает приложение) службу, которая работает в фоновом режиме и принимает ввод в очередь блокировки. Кажется, есть два способа удовлетворить мои требования ... 1. JMS (который кажется слишком тяжелым) и 2. служба, работающая в потоке, который наблюдает за очередью ... когда что-то добавляется к ней, она обрабатывает ее. а затем ждет следующего элемента. У этой службы должна быть возможность GORM, чтобы она могла создавать / сохранять объекты. Я предпочитаю запускать какой-нибудь сервис в потоке и использовать очередь блокировки ... Кто-нибудь может предложить лучший способ сделать это? Должен ли я просто реализовать класс, который вызывается при начальной загрузке grails, и использовать этот класс для создания потока, который просто выполняется в фоновом режиме? Если кто-то использовал плагин jms в grails, достаточно ли он легковесен, чтобы я мог пересмотреть свою позицию по этому поводу? Любые советы приветствуются. Я действительно НЕ привязан к какому-либо одному решению, поэтому все идеи будут рассмотрены и очень оценены.

Заранее спасибо!


person PaulP1975    schedule 27.03.2011    source источник


Ответы (2)


Вместо этого вы можете использовать интеграцию Spring. С кварцем вам нужно развить логику постановки в очередь, но с весенней интеграцией все заранее разработано.

person Houcem Berrayana    schedule 28.03.2011

Я использую плагин quartz для множества аналогичных функций "просмотра очереди".

person Gregg    schedule 27.03.2011
comment
Я думал о Quartz, но хочу, чтобы эта служба работала, пока приложение работает, а не по расписанию. Если кварц используется только при запуске, это может сработать - я бы просто запустил фоновый поток, который выживает в течение всего срока службы приложения ... Я посмотрю, есть ли у него такая опция. Спасибо. - person PaulP1975; 27.03.2011
comment
Похоже, вы немного не понимаете, как работает кварц. Да, он работает по расписанию, но это работа, запускающая службу (в вашем случае - службу Grails). Итак, каждые 5 минут (или как хотите) он запускает метод обслуживания, а затем вы делаете все, что хотите. Он будет продолжать это делать, пока вы его не выключите. А остальная часть вашего приложения просто продолжает работать долго. Он не ждет, пока кварцевый механизм что-нибудь сделает. Он просто продолжает обрабатывать запросы. - person Gregg; 28.03.2011