Workflow 如何实现基于队列的工作流系统?
我正在开发一个文档管理系统。工作流示例如下所示:Workflow 如何实现基于队列的工作流系统?,workflow,architecture,Workflow,Architecture,我正在开发一个文档管理系统。工作流示例如下所示: 文档通过电子邮件发送到系统 该系统对该文件进行了许多准备工作 文档将呈现给用户以供进一步处理 然后,将文件发送给质量保证部 之后,系统对文档执行编号或后处理操作 文件被视为已完全处理和分发(例如,通过电子邮件发送给向系统发送文件的人等) 由于我的输入量会有所不同(但通常会很大),因此我非常担心可伸缩性 例如,假设系统已经下载了电子邮件附件。如果附件是PDF文档,系统需要将PDF拆分为单独的页面,然后将每个页面转换为多个大小的缩略图,等等。我计划进
我想征求关于如何实施这样一个系统的建议 解决方案的种类取决于您使用什么技术来实现此系统。预处理/后处理是否由与电子邮件软件相同的软件/语言完成?此外,它们运行在不同的进程中 如果您有分布式组件,您可能会比研究AMQP解决方案(如)做得更糟,因为这需要将每个作业放入队列,并确保每个作业只有一个使用者参与。(我们将每个缩略图工作建模为单个任务) 但是,如果整个系统是用一种语言实现的,并且在单个进程中,可以使用一些更简单的系统:
- 是Ruby的一个很好的解决方案
- Java可以很好地作为
- 呃,我相信c#会有办法创建一个工作队列(免责声明:我对c#一无所知)
更新:Drools流已合并到JBPM中。对于这个特殊的问题,这可能有点像“用火箭筒杀死蚊子”,但这是一个很棒的工作流包。似乎你应该建立一个有多个消费者的排队系统。你想在那上面指点一下吗?当然。我对所有想法都持开放态度。我正在WAMP/LAMP上实现,但更多的是寻找一种技术无关的解决方案。因此,在这种情况下,RabbitMQ仍然应该是您的一个选项,因为AMQP是系统无关的(它的设计允许不同的技术以统一的方式相互通信)。或者在Zend Server中有一个特定的PHP队列实现(我认为这要花很多钱),或者有一个用于Resque的库,它可以插入PHP代码