我需要帮助创建一个scala服务来轮询文件创建,然后处理在scala中创建的函数。让我简要介绍一下我在做什么。
我正在使用名为scrappy的基于python的工具在一些金融网站上搜索数据,并在我的linux系统上创建一个存储为csv文件。当csv创建完成时,它还会在目录中创建一个完整的文件。那个杂乱无章的人在当天制作了47个csv文件,因此完成了45个文件。
我已经学习了(尽管很新)scala并在scala中编写了csv解析器和mongo db loader。如果单独运行它,它工作正常,但我需要一个scala中的机制
例如,在完整目录中,它将写入2个文件NASDAQ_20141114.com和NYSE_20141114.com。该服务应为纳斯达克和纽约证券交易所创办2名子女。
我试过看过akka,但这对我来说似乎很复杂。
请帮助并提出建议。
答案 0 :(得分:1)
Java 7提供WatchService API(example)
这可以在Scala中使用:
val watchService = FileSystems.getDefault.newWatchService()
Paths.get("/foo/bar").register(watchService, ENTRY_CREATE, ENTRY_DELETE)
while(true) {
val key = watchService.take()
key.pollEvents() foreach { event =>
event.kind() match {
case ENTRY_CREATE => //...
case ENTRY_DELETE => //...
case x =>
logger.warn(s"Unknown event $x")
}
}
key.reset()
}
来自WatchService combined with Akka actors
的示例您还可以使用可用的包装库,例如schwatcher
另外,你可以使用Apache Camels File component和Camel plugs in nicely to Akka和Quartz
还有自定义构建的文件传输解决方案,例如JADE - JobScheduler Advanced Data Exchange,可以在文件可用时触发您的程序。 (包括调度程序)
对于调度程序,我建议Quartz或Jobscheduler