在Java中处理链中的作业排队

我目前正在java中设计一个关联引擎,它从pdf文件中提取数据,并在关系数据库中关联(必要时提醒警报)结构化数据。

该系统专注于处理pdf文件,包括:

从pdf执行自定义提取的组件。

将有时无序的不清洁数据解析为所需数据结构的组件

一个归一化组件,它将对值进行标准化以进行比较

以及与db接口的组件(其中提取的数据将与其余数据一起插入)

组件应该可以在其他处理链中重复使用,但它们最初都在同一系统上运行。

我认为在组件之间进行某种缓冲是明智的,使用JMS队列是明智的还是会使问题复杂化? 我一直在试验一个简单的linkedblockingqueue对象,但是这个对象必须在组件之间传递,所以它需要一个主组件来驱动我不确定所需的一切,是否有一种标准的方法来解决这个问题?

除非你有额外的要求,否则我会使用链式通话。

loadPDF(new PDFExtractor(new PDFParser(new Normalizer(new DBEnricher(listener))))); 

如果你想要多个线程,我会使用ExecutorService线程池处理不同线程中的每个文件。