Package nablarch.fw.messaging.reader
Class MessageReader
java.lang.Object
nablarch.fw.messaging.reader.MessageReader
- All Implemented Interfaces:
DataReader<ReceivedMessage>
指定されたメッセージキューを監視し、受信した電文オブジェクトを返すデータリーダ。
受信電文読み込み時にエラーが発生した場合は、例外(
MessageReadError
)を送出する。- Author:
- Iwauo Tajima
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface nablarch.fw.DataReader
DataReader.NoMoreRecord
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close
(ExecutionContext ctx) このリーダのクローズフラグを立て新規電文の受信を停止する。boolean
hasNext
(ExecutionContext ctx) 次に読み込むデータが存在するかどうかを返却する。read
(ExecutionContext ctx) 受信電文を読み込む。setFormatFileDirName
(String dirName) 受信電文のフォーマット定義ファイルが配置されているディレクトリの 論理名を指定する。setFormatFileName
(String fileName) 受信電文のフォーマット定義ファイル名を設定する。setReadTimeout
(long timeout) 受信キューが空の場合に待機する最大時間を設定する。setReceiveQueueName
(String queueName) このリーダが監視する受信キューの論理名を設定する。
-
Constructor Details
-
MessageReader
public MessageReader()
-
-
Method Details
-
read
受信電文を読み込む。 カレントスレッドに紐づけられたMessagingContext
オブジェクトを使用して受信キューから電文を取得し返却する。
受信キュー上に電文が1件も無い場合は、新規電文を受信するか、タイムアウト時間まで待機する。
(このタイムアウトは各スレッドが開閉局やプロセス停止フラグ等の実行制御系の ステータスを確認するために必要となる。)
既にリーダが閉じられていた場合、またはタイムアウトした場合はnull
を返却する。- Specified by:
read
in interfaceDataReader<ReceivedMessage>
- Parameters:
ctx
- 実行コンテキスト- Returns:
- 受信電文オブジェクト
- Throws:
IllegalStateException
- 受信キューの論理名がnull
の場合RuntimeException
- 実行時例外が発生した場合Error
- エラーが発生した場合MessageReadError
- 受信電文オブジェクトの設定中に 実行時例外またはエラーが発生した場合
-
hasNext
次に読み込むデータが存在するかどうかを返却する。 この実装では、リーダが開いているかどうかで次のデータを読めるかどうか判定する。- Specified by:
hasNext
in interfaceDataReader<ReceivedMessage>
- Parameters:
ctx
- 実行コンテキスト- Returns:
- 次に読み込むデータが存在する場合は
true
-
close
このリーダのクローズフラグを立て新規電文の受信を停止する。 受信イベント待ちで待機中のスレッドについてはそのまま放置する。
それらのスレッドは、新規電文を受信するかタイムアウトした時点で待機が解除される。- Specified by:
close
in interfaceDataReader<ReceivedMessage>
- Parameters:
ctx
- 実行コンテキスト
-
setReceiveQueueName
このリーダが監視する受信キューの論理名を設定する。- Parameters:
queueName
- 受信キューの論理名- Returns:
- このオブジェクト自体
-
setReadTimeout
受信キューが空の場合に待機する最大時間を設定する。 0以下の値を設定した場合はタイムアウトせずに 新規電文を受信するまで待機し続ける。- Parameters:
timeout
- 受信タイムアウト(単位:ミリ秒)- Returns:
- このオブジェクト自体
-
setFormatFileName
受信電文のフォーマット定義ファイル名を設定する。- Parameters:
fileName
- フォーマット定義ファイル名- Returns:
- このオブジェクト自体
-
setFormatFileDirName
受信電文のフォーマット定義ファイルが配置されているディレクトリの 論理名を指定する。- Parameters:
dirName
- フォーマット定義ファイル配置ディレクトリの論理名- Returns:
- このオブジェクト自体
-