2

在多次尝试实现并发线程失败后,我正在尝试在 Grails 中实现消费者/生产者应用程序。基本上,我想将来自客户端的所有事件(通过单独的 AJAX 调用)存储在一个队列中,然后在添加新事件后立即以线性方式处理这样的队列。

这看起来像一个生产者/消费者问题http ://en.wikipedia.org/wiki/Producer-consumer_problem

我如何在 Grails 中实现这一点(可能使用计时器,或者通过生成事件“进程队列”更好)?

基本上我希望有一个单例服务等待队列中的新事件并线性处理它们(即使队列由多个并发进程加载)。

有什么提示吗?

干杯!

4

2 回答 2

3

我建议使用 Java 消息服务,而不是自己实现它。它可以准确处理您正在谈论的问题类型。此外,Grails 有一个 JMS 插件。

关于 JMS 的 Sun 文档:http: //java.sun.com/developer/technicalArticles/Ecommerce/jms/index.html

Grails JMS 插件:http ://www.grails.org/JMS+Plugin

于 2010-05-25T15:11:09.750 回答
1

我最近不得不实现相同类型的系统,并将RabbitMQ用于消息传递代理,并使用RabbitMQ 插件用于 Grails 与其交互。

我选择 RabbitMQ 是因为它具有我正在寻找的特性(规模、速度、可靠性),并且建立在 AMQP 标准之上,这意味着我可以让我的生产者和消费者用我需要的任何语言编写而无需担心。

Grails 作为生产者和消费者都非常有效,并且具有仍然能够使用应用程序的完整 GORM 域的优势。

为了扩展队列的生产者消费者端,我所要做的就是启动更多的 grails 实例并调整消费者线程数,所以它工作得非常好。

于 2012-01-27T18:25:42.647 回答