12.7.5.6 DequeueArray(int, OracleAQDequeueOptions)
このインスタンス・メソッドは、指定されたデキュー・オプションを使用してキューから複数のメッセージをデキューします。
宣言
// C# public OracleAQMessage[] DequeueArray(int dequeueCount, OracleAQDequeueOptions dequeueOptions);
パラメータ
-
dequeueCount
デキューするメッセージの数を指定する
integer
。 -
dequeueOptions
OracleAQDequeueOptions
オブジェクト。
戻り値
デキューされたメッセージを表すOracleAQMessage
インスタンスの配列。
例外
ArgumentOutOfRangeException
- dequeueCount
が0以下です。
InvalidOperationException
- 接続がオープンされていません。
ObjectDisposedException
- オブジェクトはすでに処理されています。
OracleException
: タイムアウトした場合、「ORA-25228: queue_nameからメッセージをデキュー中に、タイムアウトまたはフェッチ終了になりました。」
というメッセージとともに例外がスローされます。DequeueOptions.Wait
が-1
以外の値に設定されていると、タイムアウトが発生することがあります。
備考
このメソッドは、Oracle Database 10gリリース1(10.1)以上のリリースでサポートされます。このメソッドをコールしても、キューのDequeueOptions
プロパティは変更されません。
指定したdequeueOptions
オブジェクトがnull
の場合は、デキュー・オプションのデフォルト値が使用されます。この操作では、キュー・オブジェクトのDequeueOptions
プロパティは無視されます。
このファンクションをコールする前にMessageType
プロパティを適切に設定しておく必要があります。MessageType
がOracleAQMessageType.UDT
の場合は、UdtTypeName
プロパティも設定する必要があります。
戻される配列のサイズは、dequeueCount
より小さいことがあります。キューに存在するメッセージの実際の数によって異なります。
データベースのバージョンがOracle Database 12cリリース2 (12.2)より前の場合は、DequeueArray
を使用して取得される永続OracleAQMessage
オブジェクトのMessageId
プロパティは常にnull
です。
デキューされたバッファ・メッセージのMessageId
値は、データベースのバージョンに関係なく、常にnull
です。