Spring并发处理多个队列与单线程池

时间:2017-01-30 09:07:00

标签: java spring multithreading spring-integration

我有一个spring应用程序应该处理和存储套接字传入数据,因为瓶颈问题应该用多线程来完成。

传入数据属于许多实体,而每个实体任务应按顺序处理,但我认为为每个实体分配单个线程不是一个好的解决方案(数千单线程来处理每个实体的队列)

那么如何定义公共ThreadPool以使用票价算法处理所有实体的队列?

2 个答案:

答案 0 :(得分:2)

您已经描述了使用消息驱动架构解决的完美问题。

Spring Integration是为您提供此功能的模块。

您可以使用@ServiceActivator构建任务服务并进行注释,并使用频道创建您的链。

频道可以选择在不同的线程池上执行,并且可以通过频道上的队列设置克服因峰值负载导致的瓶颈。

绝对值得一试查看Spring Integration的文档。

答案 1 :(得分:0)

您可以使用Project reactorRxJava按组拆分传入的消息流,并按顺序处理每个组中的事件。

使用Project Reactor,您的代码可能如下所示:

<span class="orangeStat">
    A STATISTIC<!--
--></span>.