我有一个spring应用程序应该处理和存储套接字传入数据,因为瓶颈问题应该用多线程来完成。
传入数据属于许多实体,而每个实体任务应按顺序处理,但我认为为每个实体分配单个线程不是一个好的解决方案(数千单线程来处理每个实体的队列)
那么如何定义公共ThreadPool
以使用票价算法处理所有实体的队列?
答案 0 :(得分:2)
您已经描述了使用消息驱动架构解决的完美问题。
Spring Integration是为您提供此功能的模块。
您可以使用@ServiceActivator构建任务服务并进行注释,并使用频道创建您的链。
频道可以选择在不同的线程池上执行,并且可以通过频道上的队列设置克服因峰值负载导致的瓶颈。
绝对值得一试查看Spring Integration的文档。
答案 1 :(得分:0)
您可以使用Project reactor或RxJava按组拆分传入的消息流,并按顺序处理每个组中的事件。
使用Project Reactor,您的代码可能如下所示:
<span class="orangeStat">
A STATISTIC<!--
--></span>.