Class MessageReader

java.lang.Object
nablarch.fw.messaging.reader.MessageReader
All Implemented Interfaces:
DataReader<ReceivedMessage>

public class MessageReader extends Object implements DataReader<ReceivedMessage>
指定されたメッセージキューを監視し、受信した電文オブジェクトを返すデータリーダ。

受信電文読み込み時にエラーが発生した場合は、例外(MessageReadError)を送出する。

See Also:
  • Constructor Details

    • MessageReader

      public MessageReader()
  • Method Details

    • read

      public ReceivedMessage read(ExecutionContext ctx)
      受信電文を読み込む。

      カレントスレッドに紐づけられたMessagingContext オブジェクトを使用して受信キューから電文を取得し返却する。
      受信キュー上に電文が1件も無い場合は、新規電文を受信するか、タイムアウト時間まで待機する。
      (このタイムアウトは各スレッドが開閉局やプロセス停止フラグ等の実行制御系の ステータスを確認するために必要となる。)
      既にリーダが閉じられていた場合、またはタイムアウトした場合はnullを返却する。

      Specified by:
      read in interface DataReader<ReceivedMessage>
      Parameters:
      ctx - 実行コンテキスト
      Returns:
      受信電文オブジェクト
      Throws:
      IllegalStateException - 受信キューの論理名がnullの場合
      RuntimeException - 実行時例外が発生した場合
      Error - エラーが発生した場合
      MessageReadError - 受信電文オブジェクトの設定中に 実行時例外またはエラーが発生した場合
    • hasNext

      public boolean hasNext(ExecutionContext ctx)
      次に読み込むデータが存在するかどうかを返却する。

      この実装では、リーダが開いているかどうかで次のデータを読めるかどうか判定する。

      Specified by:
      hasNext in interface DataReader<ReceivedMessage>
      Parameters:
      ctx - 実行コンテキスト
      Returns:
      次に読み込むデータが存在する場合は true
    • close

      public void close(ExecutionContext ctx)
      このリーダのクローズフラグを立て新規電文の受信を停止する。

      受信イベント待ちで待機中のスレッドについてはそのまま放置する。
      それらのスレッドは、新規電文を受信するかタイムアウトした時点で待機が解除される。

      Specified by:
      close in interface DataReader<ReceivedMessage>
      Parameters:
      ctx - 実行コンテキスト
    • setReceiveQueueName

      public MessageReader setReceiveQueueName(String queueName)
      このリーダが監視する受信キューの論理名を設定する。
      Parameters:
      queueName - 受信キューの論理名
      Returns:
      このオブジェクト自体
    • setReadTimeout

      public MessageReader setReadTimeout(long timeout)
      受信キューが空の場合に待機する最大時間を設定する。

      0以下の値を設定した場合はタイムアウトせずに 新規電文を受信するまで待機し続ける。

      Parameters:
      timeout - 受信タイムアウト(単位:ミリ秒)
      Returns:
      このオブジェクト自体
    • setFormatFileName

      public MessageReader setFormatFileName(String fileName)
      受信電文のフォーマット定義ファイル名を設定する。
      Parameters:
      fileName - フォーマット定義ファイル名
      Returns:
      このオブジェクト自体
    • setFormatFileDirName

      public MessageReader setFormatFileDirName(String dirName)
      受信電文のフォーマット定義ファイルが配置されているディレクトリの 論理名を指定する。
      Parameters:
      dirName - フォーマット定義ファイル配置ディレクトリの論理名
      Returns:
      このオブジェクト自体