プライマリ・コンテンツに移動
Oracle® Data Provider for .NET開発者ガイド
ODAC 12c リリース4 (12.1.0.2) for Microsoft Windows
E72575-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

OracleAQMessageクラス

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, 4.6

スレッド安全性

パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。

備考

OracleAQMessageオブジェクトは、制御情報(メタデータ)とペイロード(データ)からなります。制御情報はOracleAQMessageオブジェクトの様々なプロパティによって公開され、Oracle Streamsアドバンスト・キューイングでメッセージの管理に使用されます。ペイロードはキューに格納される情報です。


注意:

ペイロードがXmlReaderの場合、OracleAQQueueパブリック・メソッドのEnqueue()またはEnqueueArray()の複数の操作間でOracleAQMessageのインスタンスを再利用することはできません。これは、単純にXmlReaderが順方向専用のセマンティクスであり、Enqueue()またはEnqueueArray()の操作は、内部でXmlReaderの読取り操作を呼び出し、エンキュー対象のデータを抽出するためです。

OracleAQMessageメンバー

OracleAQMessageメンバーを、次の各表に示します。

OracleAQMessageコンストラクタ

OracleAQMessageコンストラクタを、表12-14にリストします。

表12-14 OracleAQMessageコンストラクタ

コンストラクタ 説明

OracleAQMessageコンストラクタ

OracleAQMessageクラスの新規インスタンスをインスタンス化します(オーバーロード)。


OracleAQMessageプロパティ

OracleAQMessageプロパティを、表12-15にリストします。

表12-15 OracleAQMessageプロパティ

プロパティ 説明

Correlation


メッセージの識別情報を指定します。

Delay


エンキューされたメッセージがデキュー可能になるまでの期間(秒)を指定します。

DeliveryMode


デキューされたメッセージの配信モードを指定します。

DequeueAttempts


メッセージのデキューを試みた回数を戻します。

EnqueueTime


メッセージがエンキューされた時間を指定します。

ExceptionQueue


メッセージを正常に処理できない場合に、そのメッセージの移動先となるキューの名前を指定します。

Expiration


エンキューされたメッセージがデキュー可能な期間(秒)を指定します。

MessageId


メッセージ識別子を戻します。

OriginalMessageId


このメッセージを生成した、最後のキュー内のメッセージの識別子を指定します。

Payload


メッセージのペイロードを指定します。

Priority


メッセージの優先順位を指定します。

Recipients


デフォルトのキュー・サブスクライバに優先する受信者のリストを指定します。

SenderId


メッセージの元の送信者を識別します。

State


デキュー時のメッセージの状態を指定します。

TransactionGroup


デキューされたメッセージのトランザクション・グループを指定します。


OracleAQMessageコンストラクタ

OracleAQMessageコンストラクタは、OracleAQMessageクラスの新規インスタンスを作成します。

オーバーロード・リスト:

  • OracleAQMessage()

    このコンストラクタは、OracleAQMessageクラスをインスタンス化します。

  • OracleAQMessage(Object)

    このコンストラクタは、ペイロードとして指定されたオブジェクトを使用してOracleAQMessageクラスをインスタンス化します。

OracleAQMessage()

このコンストラクタは、OracleAQMessageクラスをインスタンス化します。

宣言

// C#
public OracleAQMessage();

OracleAQMessage(Object)

このコンストラクタは、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プロパティ

OracleAQMessageプロパティを、表12-16にリストします。

表12-16 OracleAQMessageプロパティ

プロパティ 説明

Correlation


メッセージの識別情報を指定します。

Delay


エンキューされたメッセージがデキュー可能になるまでの期間(秒)を指定します。

DeliveryMode


デキューされたメッセージの配信モードを指定します。

DequeueAttempts


メッセージのデキューを試みた回数を戻します。

EnqueueTime


メッセージがエンキューされた時間を指定します。

ExceptionQueue


メッセージを正常に処理できない場合に、そのメッセージの移動先となるキューの名前を指定します。

Expiration


エンキューされたメッセージがデキュー可能な期間(秒)を指定します。

MessageId


メッセージ識別子を戻します。

OriginalMessageId


このメッセージを生成した、最後のキュー内のメッセージの識別子を指定します。

Payload


メッセージのペイロードを指定します。

Priority


メッセージの優先順位を指定します。

Recipients


デフォルトのキュー・サブスクライバに優先する受信者のリストを指定します。

SenderId


メッセージの元の送信者を識別します。

State


デキュー時のメッセージの状態を指定します。

TransactionGroup


デキューされたメッセージのトランザクション・グループを指定します。


Correlation

このインスタンス・プロパティは、メッセージの識別情報を指定します。

宣言

// C#
public string Correlation {get;set;}

プロパティ値

メッセージの識別情報を指定するstring

備考

メッセージのプロデューサは、エンキュー時にこのプロパティを設定できます。コンシューマは、OracleAQDequeueOptionsオブジェクトのCorrelationプロパティを設定することで、この識別情報を使用して特定のメッセージをデキューできます。Correlationに基づいたメッセージのデキューの詳細は、OracleAQDequeueOptionsクラスの「Correlation」を参照してください。

Delay

このインスタンス・プロパティは、エンキューされたメッセージがデキュー可能になるまでの期間(秒)を指定します。

宣言

// C#
public int Delay {get;set;}

プロパティ値

エンキューされたメッセージがデキュー可能になるまでの秒数を示すinteger

例外

ArgumentException - 指定した値が0未満です。

備考

このプロパティにより、エンキューされたメッセージがただちに消費されるのを遅らせることができます。このプロパティの有効な値は次のとおりです。

  • 正の整数 - 遅延時間(秒)を示します。

  • 0 - メッセージがただちにデキュー可能になることを示します。

デフォルト値は0です。Delayプロパティは、バッファ・メッセージングではサポートされていません。

DeliveryMode

このインスタンス・プロパティは、デキューされたメッセージの配信モードを指定します。

宣言

// C#
public OracleAQMessageDeliveryMode DeliveryMode {get;}

プロパティ値

OracleAQMessageDeliveryModeの列挙値(OracleAQMessageDeliveryMode.PersistentまたはOracleAQMessageDeliveryMode.Buffered)。

DequeueAttempts

このインスタンス・プロパティは、メッセージのデキューを試みた回数を戻します。

宣言

// C#
public int DequeueAttempts {get;}

プロパティ値

デキューの試行回数を示すinteger

備考

このプロパティがOracleAQMessageで使用可能になるのは、メッセージがキューからデキューされた後です。

EnqueueTime

このインスタンス・プロパティは、メッセージがエンキューされた時間を指定します。

宣言

// C#
public DateTime EnqueueTime {get;}

プロパティ値

DateTimeオブジェクト。

備考

このプロパティが使用可能になるのは、メッセージがデキューされた後です。このプロパティにより、デキューされたメッセージのエンキュー時間が得られます。

ExceptionQueue

このインスタンス・プロパティは、メッセージを正常に処理できない場合に、そのメッセージの移動先となるキューの名前を指定します。

宣言

// C#
public string ExceptionQueue {get;set;}

プロパティ値

メッセージを正常に処理できない場合に、そのメッセージの移動先となるキューの名前。デフォルト値はnullです。

備考

このプロパティは、メッセージが期限切れになったか、デキューに失敗した回数がキューのmax_retries値を超えた場合に、そのメッセージの移動先となるキューを指定します。

このプロパティが設定されていないか、指定した例外キュー名が存在しない場合は、キュー表に関連付けられているデフォルトの例外キューが使用されます。

Expiration

このインスタンス・プロパティは、エンキューされたメッセージがデキュー可能な期間(秒)を指定します。

宣言

// C#
public int Expiration {get;set;}

プロパティ値

エンキューされたメッセージがデキュー可能な秒数を指定するinteger

例外

ArgumentException - 指定した値が-1未満です。

備考

指定した値は、Delayプロパティに指定した値からのオフセットです。

このプロパティの有効な値は次のとおりです。

  • 正の整数 - 有効期間(秒)を示します。

  • -1 - メッセージが期限切れにならないことを示します。

デフォルト値は-1です。期限切れになったメッセージは、READY状態からEXPIRED状態に移行します。

MessageId

このインスタンス・プロパティは、メッセージ識別子を戻します。

宣言

// C#
public byte[] MessageId {get;}

プロパティ値

メッセージ識別子を指定するbyte[]

備考

このプロパティが使用可能になるのは、エンキュー操作またはデキュー操作の後です。デキューされたバッファ・メッセージのMessageId値はnullです。

OriginalMessageId

このインスタンス・プロパティは、このメッセージを生成した、最後のキュー内のメッセージの識別子を指定します。

宣言

// C#
public byte[] OriginalMessageId {get;}

プロパティ値

元のメッセージ識別子を指定するbyte[]

Payload

このインスタンス・プロパティは、メッセージのペイロードを指定します。

宣言

// C#
public Object Payload {get;set;}

プロパティ値

メッセージのペイロードを指定するObject

例外

ArgumentException - 指定したオブジェクトは使用可能なタイプの1つではありません。

備考

様々なペイロード・タイプの詳細は、OracleAQQueueクラスの「MessageType」を参照してください。

Priority

このインスタンス・プロパティは、メッセージの優先順位を指定します。

宣言

// C#
public int Priority {get;set;}

プロパティ値

メッセージの優先順位を指定するinteger

備考

デフォルト値は0です。このプロパティを有効にするためには、メッセージのエンキュー前に設定しておく必要があります。

値が小さければ小さいほど、メッセージの優先順位は高くなります。負の値も使用できます。

エンキューされたメッセージの優先順位は、優先順位に基づいてデキューを行う際に役立ちます。

Recipients

このインスタンス・プロパティは、デフォルトのキュー・サブスクライバに優先する受信者のリストを指定します。

宣言

// C#
public OracleAQAgent[] Recipients {get; set}

プロパティ値

OracleAQAgent[]

備考

この受信者リストは、複数コンシューマ・キューにエンキューされるメッセージに対してのみ有効です。デキュー時のメッセージについては、受信者のリストは戻されません。

SenderId

このインスタンス・プロパティは、メッセージの元の送信者を識別します。

宣言

// C#
public OracleAQAgent SenderId {get; set}

プロパティ値

OracleAQAgentオブジェクト。

備考

送信者の識別は、8.1以上のデータベース互換性レベルで作成されたすべてのキュー表でサポートされます。

State

このインスタンス・プロパティは、デキュー時のメッセージの状態を指定します。

宣言

// C#
public OracleAQMessageState State {get;}

プロパティ値

OracleAQMessageStateの列挙値。

備考

このプロパティが使用可能になるのは、メッセージがデキューされた後です。

デキュー・オプションのCorrelationを指定してデキューしたバッファ・メッセージの状態は、常にOracleAQMessageState.Readyです。

TransactionGroup

このインスタンス・プロパティは、デキューされたメッセージのトランザクション・グループを指定します。

宣言

// C#
public string TransactionGroup {get;}

プロパティ値

トランザクション・グループを指定するstring

備考

このプロパティが設定されるのは、DequeueArrayをコールした後です。このプロパティは、Oracle Database 10g以上のデータベースを使用している場合にのみサポートされます。

1つのキューに属するメッセージをグループ化すると、1人のユーザーが一度に消費することのみが可能なセットを形成できます。そのためには、メッセージのグループ化が可能なキュー表にキューを作成する必要があります。1つのグループに属するメッセージはすべて、同じトランザクションで作成されたものである必要があります。また、1つのトランザクションで作成されたメッセージはすべて、同じグループに属します。