クラス MessageChannelPartitionHandler

java.lang.ObjectSE
org.springframework.batch.core.partition.support.AbstractPartitionHandler
org.springframework.batch.integration.partition.MessageChannelPartitionHandler
実装されたすべてのインターフェース:
PartitionHandlerorg.springframework.beans.factory.InitializingBean

@MessageEndpoint public class MessageChannelPartitionHandler extends AbstractPartitionHandler implements org.springframework.beans.factory.InitializingBean
MessageChannel インスタンスを使用して リモートワーカーに命令を送信し、そのレスポンスを受信する PartitionHandlerMessageChannel は、ワーカーの場所とそれらとの通信に使用されるトランスポートを実行時に変更できるように、優れた抽象化を提供します。リモートワーカーとの通信はトランザクションである必要も、配信が保証されている必要もないため、ローカルスレッドプールベースの実装は、リモート Web サービスや JMS 実装と同様に機能します。リモートワーカーが失敗した場合、ジョブは失敗しますが、欠落しているメッセージと処理を取得するために再起動できます。リモートワーカーは、これらの再起動間の共有状態を一元管理できるように、Spring Batch JobRepository にアクセスする必要があります。

MessageChannel は ワーカーにリクエストを送信するために使用されますが、ワーカーのレスポンスは次の 2 つの方法のいずれかで取得できます。

  • 返信チャンネル - ワーカーは、このコンポーネントを介して集約されるメッセージで応答します。
  • ジョブリポジトリのポーリング - 各ワーカーの状態は、ジョブリポジトリ内で個別に維持されるため、ワーカーが正式に応答する必要なしに、ストアをポーリングして状態を判別できます。
メモ: このための応答チャネルはインスタンスベースです。このコンポーネントを複数のステップインスタンス間で共有すると、メッセージが交差する可能性があります。このコンポーネントは、ステップスコープまたはジョブスコープにすることをお勧めします。
作成者:
Dave Syer, Will Schipp, Michael Minella, Mahmoud Ben Hassine
  • コンストラクターの詳細

    • MessageChannelPartitionHandler

      public MessageChannelPartitionHandler()
  • メソッドの詳細

    • afterPropertiesSet

      public void afterPropertiesSet() throws ExceptionSE
      次で指定:
      インターフェース org.springframework.beans.factory.InitializingBeanafterPropertiesSet 
      例外:
      ExceptionSE
    • setTimeout

      public void setTimeout(long timeout)
      ジョブリポジトリのポーリングを使用する場合、待機する時間制限。
      パラメーター:
      timeout - 待機するミリ秒。デフォルトは -1(タイムアウトなし)です。
    • setJobExplorer

      public void setJobExplorer(JobExplorer jobExplorer)
      ジョブリポジトリのクエリに使用する JobExplorer。ジョブリポジトリポーリングを使用する場合は、これまたは DataSourceSE のいずれかが必要です。
      パラメーター:
      jobExplorer - ルックアップに使用する JobExplorer
    • setPollInterval

      public void setPollInterval(long pollInterval)
      ワーカーのステータスについてジョブリポジトリをポーリングする頻度。
      パラメーター:
      pollInterval - ポーリング間のミリ秒、デフォルトは 10000 (10 秒)。
    • setDataSource

      public void setDataSource(DataSourceSE dataSource)
      ジョブリポジトリを指す DataSourceSE
      パラメーター:
      dataSource - ジョブリポジトリのストアを指す DataSourceSE
    • setMessagingOperations

      public void setMessagingOperations(org.springframework.integration.core.MessagingTemplate messagingGateway)
      リモートワーカーとメッセージを送受信するための事前設定されたゲートウェイ。このプロパティを使用すると、送信のタイムアウトやその他のプロパティを大幅に制御できます。内部でチャネルを設定する必要があります。応答のタイムアウトは、リモートステップが完了するのに十分な時間設定する必要があります。
      パラメーター:
      messagingGateway - 設定する MessagingTemplate 
    • setStepName

      public void setStepName(StringSE stepName)
      パーティション化された 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 と アグリゲーターで現実的に設定する必要があります。
      次で指定:
      クラス AbstractPartitionHandlerdoHandle 
      パラメーター:
      managerStepExecution - パーティション全体の実行
      partitionStepExecutions - 実行する StepExecution インスタンス
      戻り値:
      これらの完成した StepExecution インスタンスの更新されたビュー
      例外:
      ExceptionSE - 何かがうまくいかない場合。これにより、実装は自由になり、必要に応じて呼び出し元が例外をステップ障害に変換することに依存することができます。
      関連事項: