クラス MessageChannelPartitionHandler
java.lang.ObjectSE
org.springframework.batch.core.partition.support.AbstractPartitionHandler
org.springframework.batch.integration.partition.MessageChannelPartitionHandler
- 実装されたすべてのインターフェース:
PartitionHandler
,org.springframework.beans.factory.InitializingBean
@MessageEndpoint
public class MessageChannelPartitionHandler
extends AbstractPartitionHandler
implements org.springframework.beans.factory.InitializingBean
MessageChannel
インスタンスを使用して リモートワーカーに命令を送信し、そのレスポンスを受信する PartitionHandler
。MessageChannel
は、ワーカーの場所とそれらとの通信に使用されるトランスポートを実行時に変更できるように、優れた抽象化を提供します。リモートワーカーとの通信はトランザクションである必要も、配信が保証されている必要もないため、ローカルスレッドプールベースの実装は、リモート Web サービスや JMS 実装と同様に機能します。リモートワーカーが失敗した場合、ジョブは失敗しますが、欠落しているメッセージと処理を取得するために再起動できます。リモートワーカーは、これらの再起動間の共有状態を一元管理できるように、Spring Batch JobRepository
にアクセスする必要があります。MessageChannel
は ワーカーにリクエストを送信するために使用されますが、ワーカーのレスポンスは次の 2 つの方法のいずれかで取得できます。
- 返信チャンネル - ワーカーは、このコンポーネントを介して集約されるメッセージで応答します。
- ジョブリポジトリのポーリング - 各ワーカーの状態は、ジョブリポジトリ内で個別に維持されるため、ワーカーが正式に応答する必要なしに、ストアをポーリングして状態を判別できます。
- 作成者:
- Dave Syer, Will Schipp, Michael Minella, Mahmoud Ben Hassine
フィールドサマリー
クラス org.springframework.batch.core.partition.support.AbstractPartitionHandler から継承されたフィールド
gridSize
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明void
ListSE<?>
protected SetSE<StepExecution>
doHandle
(StepExecution managerStepExecution, SetSE<StepExecution> partitionStepExecutions) StepExecutionRequest
オブジェクトをMessagingTemplate
のリクエストチャネルに送信し、その結果を応答チャネルでStepExecution
のリストとして受信します。void
setDataSource
(DataSourceSE dataSource) ジョブリポジトリを指すDataSource
SEvoid
setJobExplorer
(JobExplorer jobExplorer) ジョブリポジトリの照会に使用するJobExplorer
。void
setMessagingOperations
(org.springframework.integration.core.MessagingTemplate messagingGateway) リモートワーカーとメッセージを送受信するための事前設定されたゲートウェイ。void
setPollInterval
(long pollInterval) ワーカーのステータスについてジョブリポジトリをポーリングする頻度。void
setReplyChannel
(org.springframework.messaging.PollableChannel replyChannel) void
setStepName
(StringSE stepName) パーティション化されたStepExecution
を実行するために使用されるStep
の名前。void
setTimeout
(long timeout) ジョブリポジトリのポーリングを使用する場合、待機する時間制限。クラス org.springframework.batch.core.partition.support.AbstractPartitionHandler から継承されたメソッド
getGridSize, handle, setGridSize
コンストラクターの詳細
MessageChannelPartitionHandler
public MessageChannelPartitionHandler()
メソッドの詳細
afterPropertiesSet
- 次で指定:
- インターフェース
org.springframework.beans.factory.InitializingBean
のafterPropertiesSet
- 例外:
ExceptionSE
setTimeout
public void setTimeout(long timeout) ジョブリポジトリのポーリングを使用する場合、待機する時間制限。- パラメーター:
timeout
- 待機するミリ秒。デフォルトは -1(タイムアウトなし)です。
setJobExplorer
ジョブリポジトリのクエリに使用するJobExplorer
。ジョブリポジトリポーリングを使用する場合は、これまたはDataSource
SE のいずれかが必要です。- パラメーター:
jobExplorer
- ルックアップに使用するJobExplorer
setPollInterval
public void setPollInterval(long pollInterval) ワーカーのステータスについてジョブリポジトリをポーリングする頻度。- パラメーター:
pollInterval
- ポーリング間のミリ秒、デフォルトは 10000 (10 秒)。
setDataSource
ジョブリポジトリを指すDataSource
SE- パラメーター:
dataSource
- ジョブリポジトリのストアを指すDataSource
SE
setMessagingOperations
public void setMessagingOperations(org.springframework.integration.core.MessagingTemplate messagingGateway) リモートワーカーとメッセージを送受信するための事前設定されたゲートウェイ。このプロパティを使用すると、送信のタイムアウトやその他のプロパティを大幅に制御できます。内部でチャネルを設定する必要があります。StepExecutionRequest
ペイロードを受け入れることができるリクエストチャネルStepExecution
結果のリストを返す返信チャネル
- パラメーター:
messagingGateway
- 設定するMessagingTemplate
setStepName
パーティション化されたStepExecution
を実行するために使用されるStep
の名前。これは通常の Spring Batch ステップであり、StepExecution
コンテキストの入力パラメーターに基づいて実行を完了するために必要なすべてのビジネスロジックが含まれています。名前は、リモートワーカーによってStep
インスタンスに変換されます。- パラメーター:
stepName
- ビジネスロジックを実行するStep
インスタンスの名前
aggregate
@Aggregator(sendPartialResultsOnExpiry="true") public ListSE<?> aggregate(@Payloads ListSE<?> messages) - パラメーター:
messages
- 集約されるメッセージ- 戻り値:
- 渡されたリスト
setReplyChannel
public void setReplyChannel(org.springframework.messaging.PollableChannel replyChannel) doHandle
protected SetSE<StepExecution> doHandle(StepExecution managerStepExecution, SetSE<StepExecution> partitionStepExecutions) throws ExceptionSE StepExecutionRequest
オブジェクトをMessagingTemplate
のリクエストチャネルに送信し、その結果を応答チャネルでStepExecution
のリストとして受信します。個々のリモート応答のアグリゲーターとしてaggregate(List)
メソッドを使用します。すべての作業が行われる可能性が高くなるように、受信タイムアウトはMessagingTemplate
と アグリゲーターで現実的に設定する必要があります。- 次で指定:
- クラス
AbstractPartitionHandler
のdoHandle
- パラメーター:
managerStepExecution
- パーティション全体の実行partitionStepExecutions
- 実行するStepExecution
インスタンス- 戻り値:
- これらの完成した
StepExecution
インスタンスの更新されたビュー - 例外:
ExceptionSE
- 何かがうまくいかない場合。これにより、実装は自由になり、必要に応じて呼び出し元が例外をステップ障害に変換することに依存することができます。- 関連事項: