11

作为一名 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 提供任何反馈

4

1 回答 1

4

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

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

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

于 2013-11-04T09:03:46.893 回答