Производитель / потребитель в Grails? - PullRequest
2 голосов
/ 25 мая 2010

Я пытаюсь реализовать приложение Consumer / Producer в Grails после нескольких неудачных попыток реализации параллельных потоков. По сути, я хочу сохранить все события, поступающие от клиентов (через отдельные вызовы AJAX) в одну очередь , а затем обрабатывать такую ​​очередь линейным способом, как только добавляются новые события.

Это похоже на Проблема производителя / потребителя : http://en.wikipedia.org/wiki/Producer-consumer_problem

Как я могу реализовать это в Grails (может быть, с таймером или даже лучше, генерируя событие 'очередь процессов')?

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

Любые намеки?

Ура!

Ответы [ 2 ]

3 голосов
/ 25 мая 2010

Вместо того, чтобы реализовать все это самостоятельно, я бы рекомендовал использовать Java Messaging Service. Он решает именно тот тип проблемы, о котором вы говорите. Кроме того, Grails имеет плагин JMS.

Sun Docs на JMS: http://java.sun.com/developer/technicalArticles/Ecommerce/jms/index.html

Плагин Grails JMS: http://www.grails.org/JMS+Plugin

1 голос
/ 27 января 2012

Мне недавно пришлось внедрить такую ​​же систему, и я использовал RabbitMQ для брокера обмена сообщениями и использовал плагин RabbitMQ *1004* для Grails для взаимодействия с ним.

Я выбрал RabbitMQ, потому что он имел нужные функции (масштаб, скорость, надежность) и был построен на стандарте AMQP, что означало, что мои производители и потребители могли писать на любом нужном мне языке, не беспокоясь.

Grails отлично работает как для производителя, так и для потребителя, и имеет то преимущество, что все еще может работать с полным доменом GORM вашего приложения.

Для масштабирования, либо производителя , либо потребительского конца очереди, все, что мне нужно сделать, - это увеличить количество экземпляров grails и отрегулировать количество потоков потребителей, чтобы оно работало действительно хорошо.

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