|Oracle® Streams Advanced Queuing User's Guide and Reference
Part Number B10785-01
This section describes new features of Oracle Streams Advanced Queuing (AQ) and provides pointers to additional information. New features information from previous releases is also retained to help those users migrating to the current release.
The following sections describe new features:
Advanced Queuing has been integrated into Oracle Streams, and is now called Oracle Streams AQ. It supports all existing functionality and more, including:
Message_Properties_T Type has an additional attribute,
Oracle JMS now supports JMS version 1.1 specifications.
In earlier versions of JMS, point-to-point and publish/subscribe operations could not be used in the same transaction. JMS version 1.1 includes methods that overcome this restriction, and Oracle JMS supports these new methods.
See Also:"J2EE Compliance"
New JMS Types and added functionality to existing types
See Also:"Oracle Streams AQ Types" and "JMS Types" in PL/SQL Packages and Types Reference
See Also:"Purging a Queue Table"
V$ views for investigating the status of buffered queues:
See Also:"Dynamic Performance (V$) Views" in Oracle Database Reference for more information on these views
Queue_table_name has been expanded to show buffered messages.
The rules engine has been enhanced for higher performance and workload.
New Streams messaging high level API
You can now enqueue and dequeue multiple messages with a single command.
Propagation from object queues with BFILEs is now supported.
See Also:"Propagation from Object Queues"
New C++ interface to Oracle Streams AQ
OCCI AQ is a set of interfaces in C++ that enable messaging clients to access Oracle Streams AQ for enterprise messaging applications. OCCI AQ makes use of the OCI interface to Oracle Streams AQ and encapsulates the queuing functionality supported by OCI.
See Also:"Oracle Streams Advanced Queuing" in Oracle C++ Call Interface Programmer's Guide
AQ_TM_PROCESSES is no longer needed in
New Oracle Streams features related to Advanced Queuing include auto capture and apply message handlers.
See Also:See Oracle Streams Concepts and Administration
Oracle Messaging Gateway
In this release Oracle Messaging Gateway has the following new functionality:
Message propagation between Oracle Java Message Service (OJMS) and IBM WebSphere MQ JMS. Propagation is supported for JMS queues and topics.
Message propagation between Oracle Streams AQ and TIBCO TIB/Rendezvous for application integration.
See Also:PL/SQL Packages and Types Reference, chapters:
Java AQ API is deprecated in favor of a unified, industry-standard JMS interface. The Java AQ API is still being supported for legacy applications. However, Oracle recommends that you migrate your Java AQ API application to JMS and that new applications use JMS.
Also deprecated in this release are 8.0-style queues. All new functionality and performance improvements are confined to the newer style queues. Oracle recommends that any new queues you create be 8.1-style or newer and that you migrate existing 8.0-style queues at your earliest convenience.
Oracle Messaging Gateway
The interaction between different messaging systems is a common integration requirement. Messaging Gateway allows Advanced Queuing to propagate messages to and from non-Oracle messaging systems. It allows secure, transactional, and guaranteed one-time-only delivery of messages between Oracle Advanced Queuing and IBM Websphere MQ v5.1 and v5.2. See Chapter 18, " Introducing Oracle Messaging Gateway" for more information.
Standard JMS Support
The JMS implementation in Oracle9i release 2 (9.2.0) conforms to Sun Microsystems JMS 1.0.2b standard.
XMLType Payload Support
You are no longer required to embed an XMLType attribute in an Oracle object type. You can directly use an XMLType message as the message payload.
Oracle9i introduces the following new Oracle Streams AQ features to improve e-business integration and use standard Internet transport protocols:
To perform queuing operations over the Internet, Oracle Streams AQ takes advantage of the Internet Data Access Presentation (IDAP), which defines message structure using XML. Using IDAP, Oracle Streams AQ operations such as enqueue, dequeue, notification, and propagation can be executed using HTTP(S). Third-party clients, including third-party messaging vendors, can also interoperate with Oracle Streams AQ over the Internet using Messaging Gateway.
IDAP messages may be requests, responses, or an error response. An IDAP document sent from an Oracle Streams AQ client contains an attribute for designating the remote operation; that is, enqueue, dequeue, or register accompanied by operational data. The Oracle Streams AQ implementation of IDAP can also be used to process batched enqueue and dequeue of messages.
The HTTP support in Oracle Streams AQ is implemented by using the Oracle Streams AQ servlet which is bundled with the Oracle Database server. A client invokes the servlet through an HTTP post request that is sent to the Web server. The Web server invokes the servlet mentioned in the post method if one is not already invoked. The servlet parses the content of the IDAP document and uses the Java AQ API to perform the designated operation. On completion of the call, the servlet formats either a response or an error response as indicated by IDAP and sends it back to the client.
IDAP is transport independent and therefore can work with other transport protocols transparently. Oracle Database supports HTTP; other proprietary protocols can also be supported using the callout mechanism through transformations.
Oracle Streams AQ Security over the Internet
Oracle Streams AQ functionality allows only authorized Internet users to perform operations on queues. An Internet user connects to a Web server, which in turn connects to the database using an application server. The Internet user doing the operation is typically not the database user connected to the database. Also, the Oracle Streams AQ queues cannot reside in the same schema as the connected database user. Oracle Streams AQ uses proxy authentication so that only authorized Internet users can perform operations on queues.
Oracle Internet Directory Integration: To leverage Lightweight Directory Access Protocol (LDAP) as the single point for managing generic information, Oracle Streams AQ is integrated with the Oracle Internet Directory server. This addresses the following requirements:
Global topics (queues): Oracle Streams AQ queue information can be stored in an Oracle Internet Directory server. Oracle Internet Directory provides a single point of contact to locate the required topic or queue. Business applications (users) looking for specific information need not know in which database the queue is located. Using the industry standard Java Message Service (JMS) API, users can directly connect to the queue without explicitly specifying the database or the location of the topic or queue.
Global events: Oracle Internet Directory can be used as the repository for event registration. Clients can register for database events even when the database is down. This allows clients to register for events such as "Database Open," which would not have been possible earlier. Clients can register for events in multiple databases in a single request.
XML Integration: XML has emerged as a standard for e-business data representations. The XMLType datatype has been added to the Oracle server to support operations on XML data. Oracle Streams AQ not only supports XMLType data type payloads, but also allows definitions of subscriptions based on the contents of an XML message. This is powerful functionality for online market places where multiple vendors may define their subscriptions based on the contents of the orders.
Applications are designed independent of each other. So, the messages they understand are different from each other. To integrate these applications, messages must be transformed. There are various existing solutions to handle these transformations. Oracle Streams AQ provides a transformation infrastructure that can be used to plug in transformation functionality from Oracle Application Interconnect or other third-party solutions such as Mercator without losing Oracle Streams AQ functionality. Transformations can be specified as PL/SQL call back functions, which are applied at enqueue, dequeue, or propagation of messages. These PL/SQL callback functions can call third-party functions implemented in C, Java, or PL/SQL. XSLT transformations can also be specified for XML messages.
Oracle Streams AQ Management
You can use new and enhanced Oracle Enterprise Manager to manage Oracle Streams AQ, as follows:
Improved UI task flow and administration of queues, including a topology display at the database level and at the queue level, error and propagation schedules for all the queues in the database, and relevant initialization parameters (init.ora)
Ability to view the message queue
Oracle diagnostics and tuning pack supports alerts and monitoring of Oracle Streams AQ queues. Alerts can be sent when the number of messages for a particular subscriber exceeds a threshold. Alerts can be sent when there is an error in propagation. In addition, queues can be monitored for the number of messages in ready state or the number of messages for each subscriber.
PL/SQL notifications and e-mail notifications: Oracle9i allows notifications on the queues to be PL/SQL functions. Using this functionality, users can register PL/SQL functions that are called when a message of interest is enqueued. Using e-mail notification functionality, an e-mail address can be registered to provide notifications. E-mail is sent if the message of interest arrives in the queue. Presentation of the e-mail message can also be specified while registering for e-mail notification. Users can also specify an HTTP URL to which notifications can be sent.
Dequeue enhancements: Using the dequeue with a condition functionality, subscribers can select messages that satisfy a specified condition from the messages meant for them.
Overall performance improvements: Oracle Streams AQ exhibits overall performance improvements as a result of code optimization and other changes.
Propagation enhancements: The maximum number of job queue processes has been increased from 36 to 1000 in Oracle9i. With Internet propagation, you can set up propagation between queues over HTTP. Overall performance improvements have been made in propagation due to design changes in the propagation algorithm.
All the new Oracle9i features are supported through JMS, as well as the following:
Connection pooling: Using this feature, a pool of connection can be established with the Oracle Database server. Later, at the time of establishing a JMS session, a connection from the pool can be picked up.
Global topics: This is the result of the integration with Oracle Internet Directory. Oracle Streams AQ queue information can be stored and looked up from it.
Topic browsing: Allows durable subscribers to browse through the messages in a publish/subscribe (topic) destination, and optionally allows these subscribers to purge the browsed messages (so that they are no longer retained by Oracle Streams AQ for that subscriber).
Exception listener support: This allows a client to be asynchronously notified of a problem. Some connections only consume messages, so they have no other way to learn that their connection has failed.
The Oracle8i release included the following Advanced Queuing features:
Queue-level access control
Support for Real Application Clusters
Rule-based subscribers for publish/subscribe
Listen capability (wait on multiple queues)
Propagation of messages with LOBs
Enhanced propagation scheduling
Dequeuing message headers only
Support for statistics views
Java API (native AQ)
Java Message Service (JMS) API
Separate storage of history management information