281 Oracle Database Advanced Queuing (AQ) Types
This chapter describes the types used with Oracle Database Advanced Queuing (AQ) packages for PL/SQL, DBMS_AQ,
and DBMS_AQADM
.
This chapter contains the following topics:
See Also:
Oracle Database Advanced Queuing User's Guide for information about using Oracle Database Advanced Queuing.
281.1 Advanced Queuing (AQ)Types Security Model
PUBLIC
is granted EXECUTE
privilege on the types described in this chapter.
281.2 Oracle Database Advanced Queuing (AQ) Types —Summary of Types
Oracle Database Advanced Queuing (AQ) uses types to specify certain types of information.
281.2.1 AQ$_AGENT Type
This type identifies a producer or a consumer of a message.
Syntax
TYPE SYS.AQ$_AGENT IS OBJECT ( name VARCHAR2(512), address VARCHAR2(1024), protocol NUMBER);
Attributes
Table 281-1 AQ$_AGENT Attributes
Attribute | Description |
---|---|
|
Name of a producer or consumer of a message. The name must follow object name guidelines in the Oracle Database SQL Language Reference with regard to reserved characters. |
|
Protocol-specific address of the recipient. If the protocol is For example, a queue named |
|
Protocol to interpret the address and propagate the message. Protocols 1-127 are reserved for internal use. If the protocol number is in the range 128 - 255, the address of the recipient is not interpreted by Oracle Database Advanced Queuing. |
281.2.2 AQ$_AGENT_LIST_T Type
This type identifies the list of agents for which DBMS_AQ
.LISTEN
listens.
See Also:
Syntax
TYPE SYS.AQ$_AGENT_LIST_T IS TABLE OF SYS.AQ$_AGENT INDEX BY BINARY INTEGER;
281.2.3 AQ$_DESCRIPTOR Type
This type specifies the Oracle Database Advanced Queuing descriptor received by the AQ PL/SQL callbacks upon notification.
See Also:
Syntax
TYPE SYS.AQ$_DESCRIPTOR IS OBJECT ( queue_name VARCHAR2(261), consumer_name VARCHAR2(512), msg_id RAW(16), msg_prop MSG_PROP_T, gen_desc AQ$_NTFN_DESCRIPTOR, msgid_array SYS.AQ$_NTFN_MSGID_ARRAY, ntfnsRecdInGrp NUMBER);
Attributes
Table 281-2 AQ$_DESCRIPTOR Attributes
Attribute | Description |
---|---|
|
Name of the queue in which the message was enqueued which resulted in the notification |
|
Name of the consumer for the multiconsumer queue |
|
Identification number of the message |
|
Message properties specified by the |
|
Indicates the timeout specifications |
|
Group notification message ID list |
|
Notifications received in group |
281.2.4 AQ$_NTFN_DESCRIPTOR Type
This type is for storing a generic notification descriptor regarding PL/SQL notification flags.
Syntax
TYPE SYS.AQ$_NTFN_DESCRIPTOR IS OBJECT( ntfn_flags NUMBER)
Attributes
Table 281-3 AQ$_NTFN_DESCRIPTOR Attributes
Attribute | Description |
---|---|
|
Set to 1 if the notifications are already removed after a stipulated timeout. Set 2 to denote grouping. Default is 0. |
281.2.5 AQ$_NTFN_MSGID_ARRAY Type
This type is for storing grouping notification data for AQ namespace, value 230 which is the max varray size.
Syntax
TYPE SYS.AQ$_NTFN_MSGID_ARRAY AS VARRAY(1073741824)OF RAW(16);
281.2.6 AQ$_POST_INFO Type
This type specifies anonymous subscriptions to which you want to post messages.
Syntax
TYPE SYS.AQ$_POST_INFO IS OBJECT ( name VARCHAR2(512), namespace NUMBER, payload RAW(32767));
Attributes
Table 281-4 AQ$_POST_INFO Attributes
Attribute | Description |
---|---|
|
Name of the anonymous subscription to which you want to post |
|
To receive notifications from other applications through |
|
The payload to be posted to the anonymous subscription |
281.2.7 AQ$_POST_INFO_LIST Type
This type identifies the list of anonymous subscriptions to which you want to post messages.
See Also:
Syntax
TYPE SYS.AQ$_POST_INFO_LIST AS VARRAY(1024) OF SYS.AQ$_POST_INFO;
281.2.8 AQ$_PURGE_OPTIONS_T Type
This type specifies the options available for purging a queue table.
See Also:
Syntax
TYPE AQ$_PURGE_OPTIONS_T is RECORD ( block BOOLEAN DEFAULT FALSE delivery_mode PLS_INTEGER DEFAULT PERSISTENT);
Table 281-5 AQ$_PURGE_OPTIONS_T Type Attributes
Attribute | Description |
---|---|
|
|
|
Kind of messages to purge, either |
281.2.9 AQ$_RECIPIENT_LIST_T Type
Identifies the list of agents that receive the message. This type can be used only when the queue is enabled for multiple dequeues.
See Also:
Syntax
TYPE SYS.AQ$_RECIPIENT_LIST_T IS TABLE OF SYS.AQ$_AGENT INDEX BY BINARY_INTEGER;
281.2.10 AQ$_REG_INFO Type
This type identifies a producer or a consumer of a message.
Syntax
TYPE SYS.AQ$_REG_INFO IS OBJECT ( name VARCHAR2(512), namespace NUMBER, callback VARCHAR2(4000), context RAW(2000) DEFAULT NULL, anyctx ANYDATA, ctxtype NUMBER, payloadcbk VARCHAR2(4000), timeout NUMBER, ntfn_grouping_class NUMBER, ntfn_grouping_value NUMBER DEFAULT 600, ntfn_grouping_type NUMBER, ntfn_grouping_start_time TIMESTAMP(6) WITH TIME ZONE, ntfn_grouping_repeat_count NUMBER);
Attributes
Table 281-6 AQ$_REG_INFO Type Attributes
Attribute | Description |
---|---|
|
Specifies the name of the subscription. The subscription name is of the form |
|
Specifies the namespace of the subscription. To receive notification from Oracle Database Advanced Queuing queues, the namespace must be |
|
Specifies the action to be performed on message notification. For HTTP notifications, use |
|
Specifies the context that is to be passed to the callback function |
|
Specifies the |
|
Specifies the context type. Valid values are |
|
Specifies payload for the callback function |
|
Specifies the time in seconds |
|
Currently, only the following flag can be set to specify criterion for grouping. The default value will be 0. If
|
|
Time-period of grouping notifications specified in seconds, meaning the time after which grouping notification would be sent periodically until |
|
|
|
Notification grouping start time. Notification grouping can start from a user-specified time that should a valid timestamp with time zone. If |
|
Grouping notifications will be sent as many times as specified by the notification grouping repeat count and after that revert to regular notifications. The ntfn_grouping_repeat_count, if not specified, will default to
|
Usage Notes
You can use the following notification mechanisms:
-
OCI callback
-
e-mail callback
-
PL/SQL callback
Table 281-7 shows the actions performed for nonpersistent queues for different notification mechanisms when RAW presentation is specified. Table 281-8 shows the actions performed when XML presentation is specified.
Table 281-7 Actions Performed for Nonpersistent Queues When RAW Presentation Specified
Queue Payload Type | OCI Callback | PL/SQL Callback | |
---|---|---|---|
|
OCI callback receives the RAW data in the payload. |
Not supported |
PL/SQL callback receives the RAW data in the payload. |
|
Not supported |
Not supported |
Not supported |
Table 281-8 Actions Performed for Nonpersistent Queues When XML Presentation Specified
Queue Payload Type | OCI Callback | PL/SQL Callback | |
---|---|---|---|
|
OCI callback receives the XML data in the payload. |
XML data is formatted as a SOAP message and e-mailed to the registered e-mail address. |
PL/SQL callback receives the XML data in the payload. |
|
OCI callback receives the XML data in the payload. |
XML data is formatted as a SOAP message and e-mailed to the registered e-mail address. |
PL/SQL callback receives the XML data in the payload. |
281.2.11 AQ$_REG_INFO_LIST Type
Identifies the list of registrations to a queue.
See Also:
Syntax
TYPE SYS.AQ$_REG_INFO_LIST AS VARRAY(1024) OF SYS.AQ$_REG_INFO;
281.2.12 AQ$_SUBSCRIBER_LIST_T Type
This type identifies the list of subscribers that subscribe to a queue.
See Also:
Syntax
TYPE SYS.AQ$_SUBSCRIBER_LIST_T IS TABLE OF SYS.AQ$_AGENT INDEX BY BINARY_INTEGER;
281.2.13 DEQUEUE_OPTIONS_T Type
DEQUEUE_OPTIONS_T
specifies the options available for the dequeue operation.
Syntax
TYPE DEQUEUE_OPTIONS_T IS RECORD ( consumer_name VARCHAR2(30) DEFAULT NULL, dequeue_mode BINARY_INTEGER DEFAULT REMOVE, navigation BINARY_INTEGER DEFAULT NEXT_MESSAGE, visibility BINARY_INTEGER DEFAULT ON_COMMIT, wait BINARY_INTEGER DEFAULT FOREVER, msgid RAW(16) DEFAULT NULL, correlation VARCHAR2(128) DEFAULT NULL, deq_condition VARCHAR2(4000) DEFAULT NULL, signature aq$_sig_prop DEFAULT NULL, transformation VARCHAR2(61) DEFAULT NULL, delivery_mode PLS_INTEGER DEFAULT PERSISTENT);
Attributes
Table 281-9 DEQUEUE_OPTIONS_T Attributes
Attribute | Description |
---|---|
|
Name of the consumer. Only those messages matching the consumer name are accessed. If a queue is not set up for multiple consumers, then this field should be set to For secure queues, consumer_name must be a valid AQ agent name, mapped to the database user performing the dequeue operation, through |
|
Specifies the locking behavior associated with the dequeue. Possible settings are:
|
|
Specifies the position of the message that will be retrieved. First, the position is determined. Second, the search criterion is applied. Finally, the message is retrieved. Possible settings are:
F
|
|
Specifies whether the new message is dequeued as part of the current transaction.The visibility parameter is ignored when using the
|
|
Specifies the wait time if there is currently no message available which matches the search criteria. Possible settings are:
|
|
Specifies the message identifier of the message to be dequeued. |
|
Specifies the correlation identifier of the message to be dequeued. Special pattern matching characters, such as the percent sign ( |
|
A conditional expression based on the message properties, the message data properties, and PL/SQL functions. A To specify dequeue conditions on a message payload (object payload), use attributes of the object type in clauses. You must prefix each attribute with |
|
Currently not implemented |
|
Specifies a transformation that will be applied after dequeuing the message. The source type of the transformation must match the type of the queue. |
|
The dequeuer specifies the delivery mode of the messages it wishes to dequeue in the dequeue options. It can be |
281.2.14 ENQUEUE_OPTIONS_T Type
ENQUEUE_OPTIONS_T Type
specifies the options available for the enqueue operation.
Syntax
TYPE SYS.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);
Attributes
Table 281-10 ENQUEUE_OPTIONS_T Attributes
Attribute | Description |
---|---|
|
Specifies the transactional behavior of the enqueue request. Possible settings are:
|
|
Specifies the message identifier of the message which is referenced in the sequence deviation operation. This field is valid only if |
|
Specifies whether the message being enqueued should be dequeued before other messages already in the queue. Possible settings are:
|
|
Specifies a transformation that will be applied before enqueuing the message. The return type of the transformation function must match the type of the queue. |
|
The enqueuer specifies the delivery mode of the messages it wishes to enqueue in the enqueue options. It can be |
281.2.15 QUEUE_PROPS_T Type
This type specifies the Oracle Database Advanced Queuing descriptor received by the AQ PL/SQL callbacks upon notification.
Syntax
TYPE QUEUE_PROPS_T IS RECORD ( retry_delay NUMBER DEFAULT 0, retention_time NUMBER DEFAULT 0, sort_list VARCHAR2(30) DEFAULT NULL, cache_hint BINARY_INTEGER DEFAULT AUTO );
Attributes
Table 281-11 QUEUE_PROPS_T Attributes
Attribute | Description |
---|---|
|
Specifies the number of seconds after which this message is scheduled for processing again after an application rollback |
|
Specifies the number of seconds a message is retained in the queue table after being dequeued from the queue |
|
Sharded queues can be sorted by |
|
Specifies a hint to sharded queue whether to cache messages or not. User can specify following:
|
281.2.16 SYS.MSG_PROP_T Type
This type is used in PL/SQL notification, as one field in aq$_descriptor
, to pass message properties of an AQ message to the PL/SQL notification client callback.
Syntax
CREATE or replace TYPE sys.msg_prop_t AS OBJECT ( priority NUMBER, delay NUMBER, expiration NUMBER, correlation VARCHAR2(128), attempts NUMBER, exception_queue VARCHAR2(51), enqueue_time DATE, state NUMBER, sender_id aq$_agent, original_msgid RAW(16), delivery_mode NUMBER);
Parameters
Table 281-12 SYS.MSG_PROP_T Type Attributes
Parameter | Description |
---|---|
|
Specifies the priority of the message. A smaller number indicates higher priority. The priority can be any number, including negative numbers. |
|
Specifies the delay of the enqueued message. The delay represents the number of seconds after which a message is available for dequeuing. Dequeuing by The possible settings follow:
number: The number of seconds to delay the message |
|
Specifies the expiration of the message. It determines, in seconds, the duration the message is available for dequeuing. This parameter is an offset from the time the message is ready for dequeue. Expiration processing requires the queue monitor to be running. However the queue monitor is started automatically by the system if needed. The possible settings follow:
number: The number of seconds message remains in |
|
Returns the identifier supplied by the producer of the message at enqueue time. |
|
Returns the number of attempts that have been made to dequeue the message. This parameter cannot be set at enqueue time. |
|
Specifies the name of the queue into which the message is moved if it cannot be processed successfully. Messages are moved automatically into the exception queue. Messages are moved into the exception queue in the following cases:
The default is the exception queue associated with the queue table. If the exception queue specified does not exist at the time of the move, then the message is moved to the default exception queue associated with the queue table, and a warning is logged in the alert log. If the default exception queue is specified, then the parameter returns a |
|
Specifies the time the message was enqueued. This value is determined by the system and cannot be set by the user at enqueue time. |
|
Specifies the state of the message at the time of the dequeue. This parameter cannot be set at enqueue time. The possible states follow:
|
|
The application-sender identification specified at enqueue time by the message producer. Sender id is of type Sender name is required for secure queues at enqueue time. This must be a valid AQ agent name, mapped to the database user performing the enqueue operation, through The Sender id in the message properties returned at dequeue time may have a sender address if the message was propagated from another queue. The value of the address is the |
|
This parameter is used by Oracle Database Advanced Queuing for propagating messages. |
|
|
281.2.17 MESSAGE_PROPERTIES_T Type
This type is defined inside the DBMS_AQ package, and describes the information that AQ uses to convey the state of individual messages. These are set at enqueue time, and their values are returned at dequeue time.
See Also:
Syntax
TYPE message_properties_t IS RECORD ( priority BINARY_INTEGER NOT NULL DEFAULT 1, delay BINARY_INTEGER NOT NULL DEFAULT NO_DELAY, expiration BINARY_INTEGER NOT NULL DEFAULT NEVER, correlation VARCHAR2(128) DEFAULT NULL, attempts BINARY_INTEGER, recipient_list AQ$_RECIPIENT_LIST_T, exception_queue VARCHAR2(61) DEFAULT NULL, enqueue_time DATE, state BINARY_INTEGER, sender_id SYS.AQ$_AGENT DEFAULT NULL, original_msgid RAW(16) DEFAULT NULL, signature aq$_sig_prop DEFAULT NULL, transaction_group VARCHAR2(30) DEFAULT NULL, user_property SYS.ANYDATA DEFAULT NULL delivery_mode PLS_INTEGER NOT NULL DEFAULT DBMS_AQ.PERSISTENT);
Attributes
Table 281-13 MESSAGE_PROPERTIES_T Attributes
Attribute | Description |
---|---|
|
Specifies the priority of the message. A smaller number indicates higher priority. The priority can be any number, including negative numbers. |
|
Specifies the delay of the enqueued message. The delay represents the number of seconds after which a message is available for dequeuing. Dequeuing by The possible settings follow:
number: The number of seconds to delay the message |
|
Specifies the expiration of the message. It determines, in seconds, the duration the message is available for dequeuing. This parameter is an offset from the time the message is ready for dequeue. Expiration processing requires the queue monitor to be running. However the queue monitor is started automatically by the system if needed. The possible settings follow:
number: The number of seconds message remains in |
|
Returns the identifier supplied by the producer of the message at enqueue time. |
|
Returns the number of attempts that have been made to dequeue the message. This parameter cannot be set at enqueue time. |
|
This parameter is only valid for queues that allow multiple consumers. The default recipients are the queue subscribers. This parameter is not returned to a consumer at dequeue time. For type definition, see the "AQ$_AGENT Type". |
|
Specifies the name of the queue into which the message is moved if it cannot be processed successfully. Messages are moved automatically into the exception queue. Messages are moved into the exception queue in the following cases:
The default is the exception queue associated with the queue table. If the exception queue specified does not exist at the time of the move, then the message is moved to the default exception queue associated with the queue table, and a warning is logged in the alert log. If the default exception queue is specified, then the parameter returns a |
|
The |
|
Specifies the state of the message at the time of the dequeue. This parameter cannot be set at enqueue time. The possible states follow:
|
|
The application-sender identification specified at enqueue time by the message producer. Sender id is of type Sender name is required for secure queues at enqueue time. This must be a valid AQ agent name, mapped to the database user performing the enqueue operation, through The Sender id in the message properties returned at dequeue time may have a sender address if the message was propagated from another queue. The value of the address is the |
|
This parameter is used by Oracle Database Advanced Queuing for propagating messages. |
|
Currently not implemented |
|
Specifies the |
|
This optional attribute is used to store additional information about the payload. |
|
The message publisher specifies the delivery mode in the |
281.2.18 MESSAGE_PROPERTIES_ARRAY_T Type
This type is used by dbms_aq.enqueue_array
and dbms_aq.dequeue_array
calls to hold the set of message properties.
Each element in the payload_array
should have a corresponding element in the MESSAGE_PROPERTIES_ARRAY_T
VARRAY
.
See Also:
Syntax
TYPE MESSAGE_PROPERTIES_ARRAY_T IS VARRAY (2147483647) OF MESSAGE_PROPERTIES_T;