DequeueArray(int, OracleAQDequeueOptions)
このインスタンス・メソッドは、指定されたデキュー・オプションを使用してキューから複数のメッセージをデキューします。
宣言
// C# public OracleAQMessage[] DequeueArray(int dequeueCount, OracleAQDequeueOptions dequeueOptions);
パラメータ
-
dequeueCountデキューするメッセージの数を指定する
integer。 -
dequeueOptionsOracleAQDequeueOptionsオブジェクト。
戻り値
デキューされたメッセージを表す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です。