Grails中的生产者/消费者?
我试图在实现并发线程的几次失败尝试后,在Grails中实现Consumer/Producer应用程序。 基本上我想在单个队列中存储来自客户端的所有事件(通过单独的AJAX调用),然后在添加新事件后立即以线性方式处理这样的队列。Grails中的生产者/消费者?
这看起来像一个生产者/消费者问题: http://en.wikipedia.org/wiki/Producer-consumer_problem
我如何在Grails中实现这一点(也许有一个计时器,甚至更好的通过产生一个事件“过程队列”)?
基本上我想有一个单身服务等待队列中的新事件并线性处理它们(即使队列由多个并发进程加载)。
任何提示?
干杯!
而不是自己实现它,我会推荐使用Java消息服务。它处理您正在讨论的问题的类型。此外,Grails还有一个JMS插件。
孙文档的JMS:http://java.sun.com/developer/technicalArticles/Ecommerce/jms/index.html
Grails的JMS插件:http://www.grails.org/JMS+Plugin
我最近不得不实行相同的排序系统,并与RabbitMQ拍得消息经纪人,以及所使用的RabbitMQ plugin Grails的到与它接口。
我选择RabbitMQ是因为它具有我期待的功能(规模,速度,可靠性),并且建立在AMQP标准之上,这意味着我可以让我的生产者和消费者用我需要的任何语言编写而不用担心。
作为生产者和消费者,Grails都能很好地工作,并具有仍然能够使用应用程序的完整GORM域的优势。
为了规模化,无论是生产商还是消费者队列末尾,我所要做的就是旋转更多grails实例并调整消费者线程数,因此它的运行效果非常好。