DEQUEUE¶
DEQUEUE
プロシージャはメッセージをデキューします。署名は次のとおりです。
DEQUEUE(
<queue_name> IN VARCHAR2,
<dequeue_options> IN DBMS_AQ.DEQUEUE_OPTIONS_T,
<message_properties> OUT DBMS_AQ.MESSAGE_PROPERTIES_T,
<payload> OUT <type_name>,
<msgid> OUT RAW)
Parameters
queue_name
既存のキューの名前(オプションでスキーマ修飾)。スキーマ名を省略すると、サーバーは
SEARCH_PATH
で指定されたスキーマを使用します。Oracleとは異なり、引用符で囲まれていない識別子は保存する前に小文字に変換されることに注意してください。特殊文字を含めるか、大文字と小文字を区別する名前を使用するには、名前を二重引用符で囲みます。キューの作成の詳細については、
DBMS_AQADM.CREATE_QUEUE
を参照してください。
dequeue_options
dequeue_options
はタイプの値、dequeue_options_t
:DEQUEUE_OPTIONS_T IS RECORD( consumer_name CHARACTER VARYING(30), dequeue_mode INTEGER, navigation INTEGER, visibility INTEGER, wait INTEGER, msgid BYTEA, correlation CHARACTER VARYING(128), deq_condition CHARACTER VARYING(4000), transformation CHARACTER VARYING(61), delivery_mode INTEGER);現在、
dequeue_options_t
でサポートされているパラメーター値は次のとおりです。
|
|
|
デキュー操作のロック動作。次のいずれかでなければなりません:
|
|
取得されるメッセージを識別します。次のいずれかでなければなりません:
|
|
|
|
0より大きい数値でなければなりません。または:
|
|
デキューされるメッセージのメッセージID。 |
|
互換性のために受け入れられ、無視されます。 |
|
メッセージをデキューする必要があるかどうかを示す |
|
互換性のために受け入れられ、無視されます。 |
|
|
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
でサポートされている値は次のとおりです。
|
キューテーブル定義に優先度を参照する |
|
メッセージをデキューまたは |
|
expirationパラメーターを使用して、メッセージの有効期限が切れるまでの秒数を指定します。 |
|
相関を使用して、エントリに関連付けられるメッセージを指定します。デフォルトは |
|
これは、メッセージをデキューする試行回数を指定するシステム管理値です。 |
|
このパラメーターはサポートされていません。 |
|
|
|
|
|
このパラメーターは |
|
このパラメーターは互換性のために受け入れられ、無視されます。 |
|
このパラメーターは互換性のために受け入れられ、無視されます。 |
|
このパラメーターはサポートされていません。 |
payload
payload
パラメータを使用して、デキュー操作でメッセージのペイロードを取得します。ペイロードタイプは、キューテーブルの作成時に指定されたタイプと一致する必要があります。
msgid
msgid
パラメーターを使用して、一意のメッセージ識別子を取得します。
Example
次の匿名ブロックは DBMS_AQ.DEQUEUE
を呼び出し、キューおよびペイロードからメッセージを取得します。
DECLARE
dequeue_options DBMS_AQ.DEQUEUE_OPTIONS_T;
message_properties DBMS_AQ.MESSAGE_PROPERTIES_T;
message_handle raw(16);
payload work_order;
BEGIN
dequeue_options.dequeue_mode := DBMS_AQ.BROWSE;
DBMS_AQ.DEQUEUE(
queue_name => 'work_queue',
dequeue_options => dequeue_options,
message_properties => message_properties,
payload => payload,
msgid => message_handle
);
DBMS_OUTPUT.PUT_LINE(
'The next work order is [' || payload.subject || '].'
);
END;
ペイロードは DBMS_OUTPUT.PUT_LINE
で表示されます。