2013-10-26 22 views
11

Java開発者として、私はバッチ処理にSpring Batchを使用していましたが、一般的にストリーミングライブラリを使用してStAXで大規模なXMLファイルをエクスポートしています。バッチ処理と関数プログラミング

私はScalaアプリケーションを開発しており、バッチ処理を実現するためのフレームワーク、ツール、ガイドラインがあるかどうか疑問に思っています。

私のScalaアプリケーションではCake Patternが使用されていますが、これをSpringBatchとどのように統合できるかはわかりません。また、Functional programming in Scalaに記載されているガイドラインに沿って、IOモナドのようなものを使用して機能的な純度を維持しようとしています。

これは多分オープンな質問ですが、 ...

ここで機能的なバッチ処理を既に達成している人はいますか?どのように機能していたのですか?私はIOモナドでバッチ処理操作を作成して実行するメインを持っているはずですか? JavaでSpring Batchを使用するような、再起動可能性を監視、監視、処理するためのツールやガイドラインはありますか? ScalaでSpring Batchを使用していますか? JMS/AMQPメッセージがXMLを生成する処理を開始するのを待機する例のために、統合部分をどのように処理しますか?

subjet上の任意のフィードバックが

+2

Spring Batchが何をしているかを説明する良いイントロがありますか?私がウェブサイトを理解することはかなり困難です。 –

+2

私は「純度」が望ましい目標ではないと思っています(化学以外の何でも)。公に不変である型の使用は大きな実用的価値があります。あなたからのすべての変更可能なデータを消去することはできません。 –

+0

@RandallSchulz私は、これが何の目標であるかを実際に知らずにはっきりと話していますが、可能ならば純度は非常に有用な財産であると主張してうれしいです。明らかにすべての計算で正しいわけではありませんが、「デフォルトとしての純度」から理由を取り除き、不純物が正当なものとして追加されるだけで、それは非常に便利です。これは議論の場ではありませんが、私はあなたの意見に反するバランスを提供したいと思いました。 –

答えて

4

あなたはスカラ座で開発しているアプリの種類を言及していない大歓迎ですので、私はここに野生の推測に行くと、サーバー側いずれかの操作を実行しているとしています。あなたはそれを使用しているのであなたはAkkaを使用していると言いましょう。 :)

この場合、あなたが探しているものは、Akkaの公式Quartz Extensionとcronスタイルのスケジューリング用ユーティリティAkka Quartz Schedulerです。私は自分でそれを試していないが、あなたの要件から、Akka +このモジュールは良いフィット感があるようだ。 Akkaはすでに失敗したアクターの再開可能性を処理するためのフックを提供しているので、アクターに組み込まれたライフサイクルコールバックを活用したバッチプロセスの監視を追加することは難しくないと思います。

JMS/AMQPメッセージングとのやりとりに関しては、Akka Camel moduleを使用できます。これは、JMSを含む多くのプロトコルを通じてメッセージの送受信をサポートします。このモジュールを使用すると、コンシューマーアクターがいくつかのJMSエンドポイントからメッセージを受信し、そこから必要なプロセスを起動し、おそらくそのプロセスを担当するアクターに新しいメッセージを転送または送信します。プロセスがcronスタイルのタイマーか着信メッセージのいずれかによって起動された場合は、同じアクターを再利用してタスクを実行できます。