Seb*_*ber 11 f# haskell scala batch-processing spring-batch
作为Java开发人员,我习惯使用Spring Batch进行批处理,通常使用流式库来导出大型XML文件,例如StAX.
我现在正在开发Scala应用程序,并想知道是否有任何框架,工具或指南来实现批处理.
我的Scala应用程序使用了Cake Pattern,我不知道如何将它与SpringBatch集成.此外,我想遵循所描述的指导方针Functional programming in Scala
并尝试保持功能纯度,使用像IO monad这样的东西......
我知道这是一个悬而未决的问题,但我从未读过任何有关此事的内容......
有人已经在这里实现了功能批处理吗?它是如何工作的?我应该有一个main在IO monad中创建一个批处理操作并运行它吗?是否有任何工具或指南可以帮助,监控或处理可重启性,就像我们在Java中使用Spring Batch一样.你在Scala中使用Spring Batch吗?如何处理集成部分,例如等待JMS/AMQP消息开始生成XML的处理?
欢迎任何关于子喷气机的反馈
您没有提到您正在使用 Scala 开发哪种应用程序,因此我将在这里进行大胆猜测,假设您正在开发服务器端应用程序。进一步大胆猜测,假设您正在使用Akka ...因为您正在使用它,不是吗?:)
在这种情况下,我猜您正在寻找的是Akka Quartz Scheduler,它是 Akka 中用于 cron 式调度的官方 Quartz 扩展和实用程序。我自己没有尝试过,但从你的要求来看,Akka + 这个模块似乎很适合。考虑到 Akka 已经提供了钩子来处理失败的 Actor 的可重新启动性,并且我认为利用 Actor 内置的生命周期回调添加对批处理流程的监控并不是那么困难。
关于与 JMS/AMQP 消息传递的交互,您可以使用Akka Camel 模块,它提供通过许多协议(包括 JMS)发送和接收消息的支持。使用此模块,您可以让消费者参与者从某个 JMS 端点接收消息,并从那里启动您想要的任何进程,可能会向负责该进程的参与者转发或发送新消息。如果该进程是由 cron 样式计时器或传入消息触发的,您可以重复使用同一参与者来完成任务。