OracleAQMessage
オブジェクトは、エンキューおよびデキューされるメッセージを表します。
クラスの継承
System.Object
OracleAQMessage
宣言
// C# public sealed class OracleAQMessage
要件
プロバイダ | ODP.NET管理対象外ドライバ |
アセンブリ | Oracle.DataAccess.dll |
ネームスペース | Oracle.DataAccess.Client |
.NET Framework | 3.5, 4.0, 4.5 |
スレッド安全性
パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。
備考
OracleAQMessage
オブジェクトは、制御情報(メタデータ)とペイロード(データ)からなります。制御情報はOracleAQMessage
オブジェクトの様々なプロパティによって公開され、Oracle Streamsアドバンスト・キューイングでメッセージの管理に使用されます。ペイロードはキューに格納される情報です。
注意: ペイロードがXmlReader の場合、OracleAQQueue パブリック・メソッドのEnqueue()またはEnqueueArray()の複数の操作間でOracleAQMessage のインスタンスを再利用することはできません。これは、単純にXmlReader が順方向専用のセマンティクスであり、Enqueue()またはEnqueueArray()の操作は、内部でXmlReader の読取り操作を呼び出し、エンキュー対象のデータを抽出するためです。 |
OracleAQMessage
メンバーを、次の各表に示します。
OracleAQMessageコンストラクタ
OracleAQMessage
コンストラクタを、表12-14にリストします。
OracleAQMessageプロパティ
OracleAQMessage
プロパティを、表12-15にリストします。
表12-15 OracleAQMessageプロパティ
プロパティ | 説明 |
---|---|
|
メッセージの識別情報を指定します。 |
|
エンキューされたメッセージがデキュー可能になるまでの期間(秒)を指定します。 |
|
デキューされたメッセージの配信モードを指定します。 |
|
メッセージのデキューを試みた回数を戻します。 |
|
メッセージがエンキューされた時間を指定します。 |
|
メッセージを正常に処理できない場合に、そのメッセージの移動先となるキューの名前を指定します。 |
|
エンキューされたメッセージがデキュー可能な期間(秒)を指定します。 |
|
メッセージ識別子を戻します。 |
|
このメッセージを生成した、最後のキュー内のメッセージの識別子を指定します。 |
|
メッセージのペイロードを指定します。 |
|
メッセージの優先順位を指定します。 |
|
デフォルトのキュー・サブスクライバに優先する受信者のリストを指定します。 |
|
メッセージの元の送信者を識別します。 |
|
デキュー時のメッセージの状態を指定します。 |
|
デキューされたメッセージのトランザクション・グループを指定します。 |
OracleAQMessage
コンストラクタは、OracleAQMessage
クラスの新規インスタンスを作成します。
オーバーロード・リスト:
このコンストラクタは、OracleAQMessage
クラスをインスタンス化します。
このコンストラクタは、ペイロードとして指定されたオブジェクトを使用してOracleAQMessage
クラスをインスタンス化します。
このコンストラクタは、payload
として指定されたObject
を使用してOracleAQMessage
クラスをインスタンス化します。
宣言
// C#
public OracleAQMessage(Object payload);
パラメータ
payload
payload
を指定するObject
。次のタイプのいずれかです。
byte[ ]
IOracleCustomType
OracleBinary
OracleXmlType
String
XmlReader
例外
ArgumentException
- 指定したpayload
値のタイプが無効です。
備考
ODP.NETのAQ実装は現在、LOB属性を使用したユーザー定義タイプをサポートしていません。また、ユーザー定義タイプのその他のバリエーション(VARRAY
やネスト表など)もサポートしていませんが、これはOracle Streams AQがこれらを元々サポートしていないためです。
OracleAQMessage
プロパティを、表12-16にリストします。
表12-16 OracleAQMessageプロパティ
プロパティ | 説明 |
---|---|
|
メッセージの識別情報を指定します。 |
|
エンキューされたメッセージがデキュー可能になるまでの期間(秒)を指定します。 |
|
デキューされたメッセージの配信モードを指定します。 |
|
メッセージのデキューを試みた回数を戻します。 |
|
メッセージがエンキューされた時間を指定します。 |
|
メッセージを正常に処理できない場合に、そのメッセージの移動先となるキューの名前を指定します。 |
|
エンキューされたメッセージがデキュー可能な期間(秒)を指定します。 |
|
メッセージ識別子を戻します。 |
|
このメッセージを生成した、最後のキュー内のメッセージの識別子を指定します。 |
|
メッセージのペイロードを指定します。 |
|
メッセージの優先順位を指定します。 |
|
デフォルトのキュー・サブスクライバに優先する受信者のリストを指定します。 |
|
メッセージの元の送信者を識別します。 |
|
デキュー時のメッセージの状態を指定します。 |
|
デキューされたメッセージのトランザクション・グループを指定します。 |
このインスタンス・プロパティは、メッセージの識別情報を指定します。
宣言
// C# public string Correlation {get;set;}
プロパティ値
メッセージの識別情報を指定するstring
。
備考
メッセージのプロデューサは、エンキュー時にこのプロパティを設定できます。コンシューマは、OracleAQDequeueOptions
オブジェクトのCorrelation
プロパティを設定することで、この識別情報を使用して特定のメッセージをデキューできます。Correlation
に基づいたメッセージのデキューの詳細は、OracleAQDequeueOptions
クラスの「Correlation」を参照してください。
このインスタンス・プロパティは、エンキューされたメッセージがデキュー可能になるまでの期間(秒)を指定します。
宣言
// C# public int Delay {get;set;}
プロパティ値
エンキューされたメッセージがデキュー可能になるまでの秒数を示すinteger
。
例外
ArgumentException
- 指定した値が0未満です。
備考
このプロパティにより、エンキューされたメッセージがただちに消費されるのを遅らせることができます。このプロパティの有効な値は次のとおりです。
正の整数 - 遅延時間(秒)を示します。
0 - メッセージがただちにデキュー可能になることを示します。
デフォルト値は0です。Delay
プロパティは、バッファ・メッセージングではサポートされていません。
このインスタンス・プロパティは、デキューされたメッセージの配信モードを指定します。
宣言
// C# public OracleAQMessageDeliveryMode DeliveryMode {get;}
プロパティ値
OracleAQMessageDeliveryMode
の列挙値(OracleAQMessageDeliveryMode.Persistent
またはOracleAQMessageDeliveryMode.Buffered
)。
このインスタンス・プロパティは、メッセージのデキューを試みた回数を戻します。
宣言
// C# public int DequeueAttempts {get;}
プロパティ値
デキューの試行回数を示すinteger
。
備考
このプロパティがOracleAQMessage
で使用可能になるのは、メッセージがキューからデキューされた後です。
このインスタンス・プロパティは、メッセージがエンキューされた時間を指定します。
宣言
// C# public DateTime EnqueueTime {get;}
プロパティ値
DateTime
オブジェクト。
備考
このプロパティが使用可能になるのは、メッセージがデキューされた後です。このプロパティにより、デキューされたメッセージのエンキュー時間が得られます。
このインスタンス・プロパティは、メッセージを正常に処理できない場合に、そのメッセージの移動先となるキューの名前を指定します。
宣言
// C# public string ExceptionQueue {get;set;}
プロパティ値
メッセージを正常に処理できない場合に、そのメッセージの移動先となるキューの名前。デフォルト値はnull
です。
備考
このプロパティは、メッセージが期限切れになったか、デキューに失敗した回数がキューのmax_retries
値を超えた場合に、そのメッセージの移動先となるキューを指定します。
このプロパティが設定されていないか、指定した例外キュー名が存在しない場合は、キュー表に関連付けられているデフォルトの例外キューが使用されます。
このインスタンス・プロパティは、エンキューされたメッセージがデキュー可能な期間(秒)を指定します。
宣言
// C# public int Expiration {get;set;}
プロパティ値
エンキューされたメッセージがデキュー可能な秒数を指定するinteger
。
例外
ArgumentException
- 指定した値が-1未満です。
備考
指定した値は、Delay
プロパティに指定した値からのオフセットです。
このプロパティの有効な値は次のとおりです。
正の整数 - 有効期間(秒)を示します。
-1
- メッセージが期限切れにならないことを示します。
デフォルト値は-1
です。期限切れになったメッセージは、READY
状態からEXPIRED
状態に移行します。
このインスタンス・プロパティは、メッセージ識別子を戻します。
宣言
// C# public byte[] MessageId {get;}
プロパティ値
メッセージ識別子を指定するbyte[]
。
備考
このプロパティが使用可能になるのは、エンキュー操作またはデキュー操作の後です。デキューされたバッファ・メッセージのMessageId
値はnull
です。
このインスタンス・プロパティは、このメッセージを生成した、最後のキュー内のメッセージの識別子を指定します。
宣言
// C# public byte[] OriginalMessageId {get;}
プロパティ値
元のメッセージ識別子を指定するbyte[]
。
このインスタンス・プロパティは、メッセージのペイロードを指定します。
宣言
// C# public Object Payload {get;set;}
プロパティ値
メッセージのペイロードを指定するObject
。
例外
ArgumentException
- 指定したオブジェクトは使用可能なタイプの1つではありません。
備考
様々なペイロード・タイプの詳細は、OracleAQQueue
クラスの「MessageType」を参照してください。
このインスタンス・プロパティは、メッセージの優先順位を指定します。
宣言
// C# public int Priority {get;set;}
プロパティ値
メッセージの優先順位を指定するinteger
。
備考
デフォルト値は0です。このプロパティを有効にするためには、メッセージのエンキュー前に設定しておく必要があります。
値が小さければ小さいほど、メッセージの優先順位は高くなります。負の値も使用できます。
エンキューされたメッセージの優先順位は、優先順位に基づいてデキューを行う際に役立ちます。
このインスタンス・プロパティは、デフォルトのキュー・サブスクライバに優先する受信者のリストを指定します。
宣言
// C# public OracleAQAgent[] Recipients {get; set}
プロパティ値
OracleAQAgent[]
。
備考
この受信者リストは、複数コンシューマ・キューにエンキューされるメッセージに対してのみ有効です。デキュー時のメッセージについては、受信者のリストは戻されません。
このインスタンス・プロパティは、メッセージの元の送信者を識別します。
宣言
// C# public OracleAQAgent SenderId {get; set}
プロパティ値
OracleAQAgent
オブジェクト。
備考
送信者の識別は、8.1以上のデータベース互換性レベルで作成されたすべてのキュー表でサポートされます。
このインスタンス・プロパティは、デキュー時のメッセージの状態を指定します。
宣言
// C# public OracleAQMessageState State {get;}
プロパティ値
OracleAQMessageState
の列挙値。
備考
このプロパティが使用可能になるのは、メッセージがデキューされた後です。
デキュー・オプションのCorrelation
を指定してデキューしたバッファ・メッセージの状態は、常にOracleAQMessageState.Ready
です。
このインスタンス・プロパティは、デキューされたメッセージのトランザクション・グループを指定します。
宣言
// C# public string TransactionGroup {get;}
プロパティ値
トランザクション・グループを指定するstring
。
備考
このプロパティが設定されるのは、DequeueArray
をコールした後です。このプロパティは、Oracle Database 10g以上のデータベースを使用している場合にのみサポートされます。
1つのキューに属するメッセージをグループ化すると、1人のユーザーが一度に消費することのみが可能なセットを形成できます。そのためには、メッセージのグループ化が可能なキュー表にキューを作成する必要があります。1つのグループに属するメッセージはすべて、同じトランザクションで作成されたものである必要があります。また、1つのトランザクションで作成されたメッセージはすべて、同じグループに属します。