public class DatabaseTableQueueReader extends java.lang.Object implements DataReader<SqlRow>
hasNext(nablarch.fw.ExecutionContext)は
 常にtrueを返却し、処理対象が存在するように振る舞う。
 これにより、データが存在しない場合でもread(nablarch.fw.ExecutionContext)が呼び出され、
 テーブルの最新情報を取得し直すことが可能となる。
 
 本リーダは、処理対象レコードが存在しない場合、再度最新の情報を取得する。
 この際に、他のスレッドで処理中のレコードが未処理のまま残っている可能性がある。
 このため、各スレッドで処理中のレコードをヒープ上に保持し、
 読み込んだ対象が他のスレッドで処理中のレコードではないことを確認する。
 
 対象のレコードが、他のスレッドで処理中である場合には、次のレコードを読み込み再度チェックを行う。
 対象のレコードが、他のスレッドで処理中でない場合には、読み込んだレコードをクライアントに返却する。DatabaseRecordReader| 修飾子とタイプ | クラスと説明 | 
|---|---|
static class  | 
DatabaseTableQueueReader.InputDataIdentifier
リクエストを識別するオブジェクト。 
 | 
DataReader.NoMoreRecord| コンストラクタと説明 | 
|---|
DatabaseTableQueueReader(DatabaseRecordReader originalReader,
                        int waitTime,
                        java.lang.String... primaryKeys)
データベースをキューとして扱うリーダを生成する。 
 | 
| 修飾子とタイプ | メソッドと説明 | 
|---|---|
void | 
close(ExecutionContext ctx)
このリーダの利用を停止し、内部的に保持している各種リソースを解放する。 
 | 
DatabaseRecordReader | 
getOriginalReader()
オリジナルのリーダ( 
DatabaseRecordReader)を取得する。 | 
boolean | 
hasNext(ExecutionContext ctx)
次に読み込むデータが存在するかどうかを返却する。 
 | 
SqlRow | 
read(ExecutionContext ctx)
次のレコードを読み込み返却する。 
 | 
protected void | 
writeLog(DatabaseTableQueueReader.InputDataIdentifier inputDataIdentifier)
要求の識別情報をログに出力する。 
 | 
@Published public DatabaseTableQueueReader(DatabaseRecordReader originalReader, int waitTime, java.lang.String... primaryKeys)
originalReader - データベースレコードリーダwaitTime - データが存在しない場合の待機時間(ミリ秒)primaryKeys - レコードを一意に識別する主キーのカラム名public SqlRow read(ExecutionContext ctx)
nullを返却する。read インタフェース内 DataReader<SqlRow>ctx - 実行コンテキスト@Published protected void writeLog(DatabaseTableQueueReader.InputDataIdentifier inputDataIdentifier)
inputDataIdentifier - 要求識別情報public boolean hasNext(ExecutionContext ctx)
trueを返す。falseを返す。hasNext インタフェース内 DataReader<SqlRow>ctx - 実行コンテキストtruepublic void close(ExecutionContext ctx)
close インタフェース内 DataReader<SqlRow>ctx - 実行コンテキストpublic DatabaseRecordReader getOriginalReader()
DatabaseRecordReader)を取得する。
 
 本メソッドは、以下の理由によりプロダクションコードからの呼び出しは推奨しない。