1

春バッチ初心者です。サーバー a で Spring バッチ ジョブを実行し、Spring バッチ管理者を使用してサーバー b からそれらのジョブを起動したいのですが、可能ですか? 以下の2つの方法で検索しました。

1.JMX の方法: Spring バッチ Bean を MBean に変換できましたが、Spring バッチ管理者から読み取ることができません。Spring バッチ管理者から MBean を読み取って起動する方法を教えてください。

2.共通リポジトリ:SpringバッチとSpringバッチ管理の両方に同じdbリポジトリを使用すると、Springバッチ管理から(サーバーbから)リモートジョブを起動できると思いますが、Springバッチ管理のジョブxmlファイルではどうすればよいですかタスクレットのクラスパスですか?

上記を手伝ってもらえますか、それとも何か新しい方法があれば教えてください。

4

3 に答える 3

1

これを処理するために mq 通信を使用するフレームワークを実装することになりました。各「バッチ ノード」は、それ自体と、「nodeType=A」や「jobSizeiCanHandle=BIG」などの「バッチ クラス」パラメーターを登録します (これらは架空のものですが、要点はわかります)。クライアント コンソールはこの情報を読み取り、MQ を介してノードにクエリを実行してジョブ リストを取得します。次に、基本的なテキスト ベースのプロトコル (プロパティ ファイル形式) を介して、パラメータを含むジョブ リクエストを送信します。

command=START_JOB
job=JobABC
param1=x
param2=y

バッチ ノードの 1 つがメッセージを取得してジョブを開始し、同じ相関 ID を持つメッセージと同じ方法で成功/失敗ステータスを返します。そのため、クライアントはユーザーに応答を表示できます。

これにより、あなたが話していることを実行し、外部スケジューラ (Control-M) を介してジョブを開始することができます。上記の 'nodeType=A' を使用すると、個々のノードにクエリを実行できます (ノードは 'nodeType=A または nodeType=*' をリッスンします)。これにより、必要に応じてコマンドを特定のノードに 'ターゲット' にすることができます。

これは私たち自身のコンソールであり、Spring Batch 管理コンソールではないことに注意してください。おそらくそれは役に立たないかもしれませんが、Spring Batch API (4 または 5 asp) を使用すると、単純なコンソールを構築するのにそれほど時間はかかりません。

バッチ ノードは、HTTP REST サービスなどの単純なサービスを起動することもできますが、MQ を多用し、ノードを事前登録する必要がないというアイデアが気に入りました (フレームワーク コードは、それが HTTP コンテナーにあることを認識/気にしません)。 、そのため、エンドポイントを簡単に登録できませんでした)。MQ では、チャネルが事前に構成されており、すべてのアプリがそれを使用するだけなので、簡単に思えました。

幸運を。

于 2012-02-29T22:35:48.777 に答える
0

@チャウ

Spring バッチ管理をそのまま使用する 1 つの方法ですが、リモート ジョブを「検出」して「呼び出す」には、org.springframework.batch.admin.service.JobService および org.springframework.batch.core.launch.JobOperator に独自の実装を提供することです。リモート ジョブ レジストリ/リポジトリからジョブをクエリして呼び出すことができます。

JobService および JMX 対応ジョブ管理者のカスタム実装は、https ://github.com/regunathb/Trooper/tree/master/batch-core as: org.trpr.platform.batch.impl.spring.admin.SimpleJobServiceにあります。および org.trpr.platform.batch.impl.spring.jmx.JobAdministrator

これらの Bean を使用する Spring Bean XML はこちら: https://github.com/regunathb/Trooper/blob/master/batch-core/src/main/resources/packaged/common-batch-config.xml

于 2012-12-17T13:20:39.810 に答える
0

私は同じことをしようとしています。しかし、Spring バッチ管理からジョブを直接起動するには、すべてのジョブ リソースを Spring バッチ Web アプリに追加する必要があるようです。spring MVC で安らかなジョブの送信を試すことができます

于 2012-02-27T19:44:39.083 に答える