我试图通过应用一系列转换t0, t1, ..., tn
将输入
解析为输出
。执行将是一个链:
输入 -> t0 -> t1 -> ... -> tn -> 输出
一些转换应该并行化,以防止成为瓶颈。
Java中有没有创建这样的流程链的框架? 我知道如何手动执行此操作(例如 Queuing jobs in a processing chain in Java ),但我专门寻找一个框架,因为
- 带有缓存、等待等的较长(部分)多线程链的复杂性很快就会变得复杂
- 我有几个这样的链,并且希望避免重新发明标准库中可能涵盖的内容
最佳答案
存在许多不同的执行模型来表达这样的转换链。转换可以是具有从输入队列读取的循环的线程,也可以是具有处理每个传入消息的方法的对象(隐藏在幕后的线程和循环)。转换可以有单个输入或多个输入。它可能知道它的后继者并直接向它们发送结果,或者只是从方法返回一个值,并且单独描述的拓扑负责进一步的消息路由。当转换行为开始时,可能会或可能不会考虑保存结果的空间的可用性,等等。转换行为可能非常短,因此消息传递的开销很大,并且应该仔细优化消息传递(请参阅 Disruptor),或者为每个消息生成包装器对象的普通链接队列就足够了。
据说,不了解您的需求就很难给出建议。您应该探索存在哪些模型和实现,并找出最适合您的情况。在不了解细节的情况下,诸如“我相信框架 XYZ 就是您正在寻找的框架”之类的建议只能将顾问描述为一个几乎不了解除 XYZ 之外的其他框架的人。尽管如此,我还是敢推荐你看看Dataflow Framework for Java ,其模型足够达到,但有其局限性(例如执行节点可能不会阻塞)。
关于java - Java 中具有并行化的链式过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17656537/