Java 带spring的多线程数据处理流水线

Java 带spring的多线程数据处理流水线,java,multithreading,spring,spring-data,spring-integration,Java,Multithreading,Spring,Spring Data,Spring Integration,我有一个接收数据包的应用程序,需要解析、转换和存储这些数据 为了提高吞吐量,我尝试将不同的步骤放在不同的线程中,让数据在它们之间通过BlockingQueues“流动” 比如: (A) -->(B)-->(C)--> 到目前为止,我让A、B、C实现Runnable并手动创建它们,在构造函数中提供输入/输出队列 问题是,我需要访问A、B、C中的Spring服务。 所以我用@组件和@范围(“原型”)注释了A、B、C。我将它们注入到另一个服务中,然后在它们之间创建和设置队列,调用thread.star

我有一个接收数据包的应用程序,需要解析、转换和存储这些数据

为了提高吞吐量,我尝试将不同的步骤放在不同的线程中,让数据在它们之间通过
BlockingQueue
s“流动”

比如:

(A) -->(B)-->(C)-->

到目前为止,我让A、B、C实现
Runnable
并手动创建它们,在构造函数中提供输入/输出队列

问题是,我需要访问A、B、C中的Spring服务。 所以我用
@组件
@范围(“原型”)
注释了A、B、C。我将它们注入到另一个服务中,然后在它们之间创建和设置队列,调用
thread.start(…)

有没有更好、更“像春天”的方法?我如何控制组件的破坏,理想情况下让它们完成当前的输入队列

编辑1: 我听从了Edwin Dalorzos的建议,玩转了spring集成,试图将我关于每个消息端点一个线程的想法存档。我让多线程工作,但不能限制每个端点的线程数。

上创建了一个小演示,你正在做的事情听起来很像是在为你工作。每个端点都是通过通道进行通信的,您可以使用阻塞队列作为通道,并确保每个端点都在一个单独的线程中运行。您应该知道,有一个更好、更好的端点。为什么处理组件可以运行这些流?通常,组件是管理线程和数据的静态对象,而数据是在线程和数据之间流动的them@zapl字体也许我不够清楚。当然,数据是在组件之间流动的,而不是相反。@EdwinDalorzo:你能把这句话写成一个答案让我接受吗?在您最初的建议之后,我提出了类似的想法,尽管我为每个消息端点定义了一个执行器(固定轮询大小=1)。似乎有办法;-)