Working With Oracle Queues: Choosing Between AQ and JMS
Working With Oracle Queues: Choosing Between AQ and JMS
Ahmed Aboulnaga
Technical Director
Raastech, Inc.
Agenda
1. Introduction
2. Overview of Messaging
3. Asynchronous Messaging
4. Oracle Queues
5. Creating Queues
6. Accessing Queues
7. Oracle WebLogic JMS Bridge
8. Performance & Comparison
9. Summary
Oracle Queue
<ns4:elements xmlns:ns4="http://ns.raastech.com/Order">
<ns4:element>
<ns4:orderNumber>269041</ns4:orderNumber>
<ns4:quantity>12</ns4:quantity>
<ns4:product>Milky Way</ns4:product>
<ns4:price>0.99</ns4:price>
</ns4:element>
</ns4:elements>
Can be dequeued
based on priority or
enqueue time
WebLogic JMS
Underlying model is AQ
Persistent Store
JMS Server
JMS Module
Subdeployment Queue Topic
EXECUTE dbms_aqadm.create_queue (
queue_name => 'MyAQQueue',
queue_table => 'MyAQQueueTable');
EXECUTE dbms_aqadm.start_queue (
queue_name => 'MyAQQueue',
enqueue => TRUE,
dequeue => TRUE);
EXECUTE sys.dbms_aqadm.create_queue_table (
queue_table => 'MyJMSQueueTable',
queue_payload_type => 'SYS.AQ$_JMS_MESSAGE',
sort_list => 'PRIORITY, ENQ_TIME',
compatible => '10.0.0',
storage_clause => 'tablespace pctfree 10 initrans 1
maxtrans 255 storage ( initial 64K
minextents 1 maxextents unlimited )');
EXECUTE sys.dbms_aqadm.create_queue (
queue_name => 'MyJMSQueue',
queue_table => 'MyJMSQueueTable',
queue_type => sys.dbms_aqadm.normal_queue);
EXECUTE dbms_aqadm.start_queue (
queue_name => 'MyJMSQueue');
// Commit
db_conn.commit();
Best Performance *
Least Problems ?
60 secs Enqueue
(Avg Proc Time)
0.745 0.009 0.007
Dequeue
(Avg Proc Time)
0.059 0.030 0.029
Errors 2
Errors 5 (pool)
Oracle AQ
– Use if you are running Oracle E-Business Suite
– Use for database-driven applications
– Avoid the Oracle SOA Suite ‘AQ Adapter’, as many projects
have complained of enqueue/dequeue issues
WebLogic JMS
– Recommend using for Java and SOA based applications
– Use if you are considering switching queue (JMS) providers
– Oracle states that file-based persistent stores are considerably
faster than JDBC-based persistent stores, but tests have
shown otherwise
Ahmed Aboulnaga
Technical Director
571-249-1155
ahmed.aboulnaga@raastech.com