scala - 批处理和函数式编程

标签 scala haskell f# batch-processing spring-batch

作为一名 Java 开发人员,我习惯使用 Spring Batch 进行批处理,一般使用流式库导出大型 XML 文件,以 StAX 为例。

我现在正在开发一个 Scala 应用程序,想知道是否有任何框架、工具或指南来实现批处理。

我的 Scala 应用程序使用 Cake Pattern,我不确定如何将它与 SpringBatch 集成。另外,我想遵循 Functional programming in Scala 中描述的指南。并尝试使用 IO monad 之类的东西来保持功能的纯度......

我知道这是一个悬而未决的问题,但我从未读过有关此的任何内容...

有人已经在这里实现了功能批处理吗?它是如何工作的?我应该有一个在 IO monad 中创建批处理操作并运行它的 main 吗?是否有任何工具或指南来帮助、监控或处理可重启性,例如我们在 Java 中使用 Spring Batch。
你在 Scala 中使用 Spring Batch 吗?
您如何处理集成部分,例如等待 JMS/AMQP 消息开始生成 XML 的处理?

欢迎对 subjet 提供任何反馈

最佳答案

你没有提到你正在用 Scala 开发什么样的应用程序,所以我在这里猜测一下,假设你正在做一个服务器端的应用程序。进一步猜测假设您正在使用 Akka ...因为您正在使用它,不是吗? :)

在那种情况下,我猜你要找的是 Akka Quartz Scheduler ,Akka 中用于 cron 样式调度的官方 Quartz 扩展和实用程序。我自己没有尝试过,但根据您的要求,Akka + 这个模块似乎很合适。考虑到 Akka 已经提供了处理失败 actor 的可重启性的钩子(Hook),而且我认为利用内置在 actor 中的生命周期回调添加对批处理过程的监控并不是那么困难。

关于与 JMS/AMQP 消息的交互,您可以使用 Akka Camel module ,它支持通过许多协议(protocol)(包括 JMS)发送和接收消息。使用这个模块,您可以让消费者参与者从某个 JMS 端点接收消息,并从那里触发您想要的任何进程,可能会将新消息转发或发送给负责该进程的参与者。如果进程由 cron 样式计时器或传入消息触发,您可以重用相同的参与者来完成任务。

关于scala - 批处理和函数式编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19609949/

相关文章:

scala - 从键盘读取日期直到正确 - 在 scala 中

windows - 在 Haskell 中,waitForProcess 在 Windows 的 cmd.exe 下阻止 Ctrl-C

f# - 为什么 F# currying "flattens"函数类型?

f# - 在 F# 中链接 string.replace

c# - F# 类型提供程序 vs C# 接口(interface) + Entity Framework

Scala 的 @BeanProperty 选项

scala - Spark : How do I pass a PartialFunction to a DStream?

Scala 抽象类方法,返回一个新的对应类子对象

haskell - 索引到容器 : the mathematical underpinnings

haskell - 什么干扰了我的作用域类型变量?