ENQUEUE

ENQUEUE プロシージャは、キューにエントリを追加します。署名は次のとおりです。

ENQUEUE(
  <queue_name> IN VARCHAR2,
  <enqueue_options> IN DBMS_AQ.ENQUEUE_OPTIONS_T,
  <message_properties> IN DBMS_AQ.MESSAGE_PROPERTIES_T,
  <payload> IN <type_name>,
  <msgid> OUT RAW)

Parameters

queue_name

既存のキューの名前(オプションでスキーマ修飾)。スキーマ名を省略すると、サーバーは SEARCH_PATH で指定されたスキーマを使用します。Oracleとは異なり、引用符で囲まれていない識別子は保存する前に小文字に変換されることに注意してください。特殊文字を含めるか、大文字と小文字を区別する名前を使用するには、名前を二重引用符で囲みます。

キューの作成の詳細については、 DBMS_AQADM.CREATE_QUEUE を参照してください。

enqueue_options

enqueue_options はタイプの値、 enqueue_options_t:

DBMS_AQ.ENQUEUE_OPTIONS_T IS RECORD(
  visibility BINARY_INTEGER DEFAULT ON_COMMIT,
  relative_msgid RAW(16) DEFAULT NULL,
  sequence_deviation BINARY INTEGER DEFAULT NULL,
  transformation VARCHAR2(61) DEFAULT NULL,
  delivery_mode PLS_INTEGER NOT NULL DEFAULT PERSISTENT);

現在、 enqueue_options_t でサポートされている唯一のパラメーター値は次のとおりです。

visibility

ON_COMMIT

delivery_mode

PERSISTENT

sequence_deviation

NULL

transformation

NULL

relative_msgid

NULL

message_properties

message_properties はタイプの値、 message_properties_t:

message_properties_t IS RECORD(
 priority INTEGER,
 delay INTEGER,
 expiration INTEGER,
 correlation CHARACTER VARYING(128) COLLATE pg_catalog.”C”,
 attempts INTEGER,
 recipient_list “AQ$_RECIPIENT_LIST_T”,
 exception_queue CHARACTER VARYING(61) COLLATE pg_catalog.”C”,
 enqueue_time TIMESTAMP WITHOUT TIME ZONE,
 state INTEGER,
 original_msgid BYTEA,
 transaction_group CHARACTER VARYING(30) COLLATE pg_catalog.”C”,
 delivery_mode INTEGER
DBMS_AQ.PERSISTENT);

message_properties_t でサポートされている値は次のとおりです。

priority

キューテーブル定義に priority を参照する sort_list が含まれている場合、このパラメーターはメッセージがデキューされる順序に影響します。値が小さいほど、デキューの優先度が高くなります。

delay

メッセージをデキューまたは NO_DELAY に使用できるようになるまでの秒数を指定します。

expiration

expirationパラメーターを使用して、メッセージの有効期限が切れるまでの秒数を指定します。

correlation

相関を使用して、エントリに関連付けられるメッセージを指定します。デフォルトは NULL です。

attempts

これは、メッセージをデキューする試行回数を指定するシステム管理値です。

recipient_list

このパラメーターはサポートされていません。

exception_queue

exception_queue パラメータを使用して、メッセージの有効期限が切れたり、ロールバックが多すぎるトランザクションによってデキューされた場合に、メッセージの移動先となる例外キューの名前を指定します。

enqueue_time

enqueue_time は、レコードがキューに追加された時間です。この値はシステムによって提供されます。

state

このパラメーターはDBMS_AQによって維持されます。状態は次のとおりです。

DBMS_AQ.WAITING –遅延に達していません。

DBMS_AQ.READY –キューエントリは処理の準備ができています。

DBMS_AQ.PROCESSED –キューエントリが処理されました。

DBMS_AQ.EXPIRED –キューエントリは例外キューに移動されました。

original_msgid

このパラメーターは互換性のために受け入れられ、無視されます。

transaction_group

このパラメーターは互換性のために受け入れられ、無視されます。

delivery_mode

このパラメーターはサポートされていません。 DBMS_AQ.PERSISTENT の値を指定します。

payload

payload パラメータを使用して、キューエントリに関連付けられるデータを提供します。ペイロードタイプは、対応するキューテーブルの作成時に指定されたタイプと一致する必要があります( DBMS_AQADM.CREATE_QUEUE_TABLE を参照)。

msgid

msgid パラメーターを使用して、一意の(システム生成)メッセージ識別子を取得します。

Example

次の匿名ブロックは DBMS_AQ.ENQUEUE を呼び出し、 work_order という名前のキューにメッセージを追加します。

DECLARE

  enqueue_options    DBMS_AQ.ENQUEUE_OPTIONS_T;
  message_properties DBMS_AQ.MESSAGE_PROPERTIES_T;
  message_handle     raw(16);
  payload            work_order;

BEGIN

  payload := work_order('Smith', 'system upgrade');

DBMS_AQ.ENQUEUE(
  queue_name         => 'work_order',
  enqueue_options    => enqueue_options,
  message_properties => message_properties,
  payload            => payload,
  msgid              => message_handle
    );
 END;