我有一个数据流,基本上是一个SQL表,每分钟添加30-50条记录。需要以接近实时的速度处理(记录应在出现在数据库中后约10分钟内处理)。我想在这里使用一些类似解决方案的工作流程,以使我更轻松地处理所有记录。我需要此解决方案以具有高可用性-系统应在单独的硬件节点上工作,并且如果其中一个节点出现故障,则应具有容错能力。基本上会发生以下情况:
新记录添加到数据库
工作流程开始处理它
处理后会做一些事情(发送电子邮件,在数据库中进行插入等)
框架应记住记录已被处理
另一个要求是,如果在处理其中一个记录时发生错误,则不应阻止框架处理其他记录。它应该仅记住该特定记录需要重新处理。
我听说twitter-storm做了类似的事情,但是在这里使用它不是过大的杀伤力吗?据我了解,它的主要目的是同时处理大量数据,而我在这里根本不需要。
最佳答案
您可以使用Apache Camel
和ActiveMQ
构建完美的可扩展解决方案。有故障的节点将引发异常,并且未处理的消息可以发送回AMQ
队列,以便以后(可能还有其他节点)进行处理。