Oracle AQ message content

The Oracle AQ is a first-in-first-out (FIFO) queue. Oracle AQ has the ability to support messages of two data types:

  • Raw
  • Object types

    These are alternatively referred to as abstract data types (ADT). The object type is a composite type that includes Oracle data types such as number, date, varchar, and so on. Object types can include nested object types.

Types allowed in a message on a queue are controlled by the queue table to which the queue belongs. A queue table also controls the consumer type (single or multiple), default exception queue, message grouping, and default sorting option on dequeuing for all queues created within the queue table.

Individual queues control default delay for creation and message expiration date for all messages within the queue. A subscriber list can be configured for multi-consumer queues at the queue level. A subscriber can be another queue or an application identified by its agent name.

Queues can be propagated through an administrative interface. Subscription lists can be dynamically set and altered through the administrative interface as well.

When an individual message is enqueued, a specific recipient list that overrides subscription list setup for the queue can be specified, along with message grouping, correlation ID, and delay or expiration time for the message. Enqueuing also controls the priority and the relative position of the enqueued message. When a message is enqueued, Oracle assigns it a system-wide global ID (the Message ID) that is returned to the application.

Dequeuing specifications can include the relative position, correlation ID, and wait period of the message being dequeued. For multi-consumer queues, only a consumer whose name is on the recipient list can dequeue a message. Messages that are not dequeued before their expiration time are automatically moved into the exception queue. The adapters do not support the positioning of messages relative to a message ID.