Pour des raisons évidentes, JMS a pris une part prépondérante dans de nombreuses architectures Java et Java EE. Par ailleurs, Oracle Advanced Queuing (AQ ou Streams AQ) est un support possible pour les messages accédés en JMS. AQ apporte des alternatives intéressantes en terme de gestion des transactions, de haute disponibilité, de supervision, de possibilité de montée en charge ou, dans certains contexte où Oracle est déjà acheté, de coût. Mais ce type de considération est stérile... Pourquoi utiliser AQ plutôt que Apache ActiveMQ, les fournisseurs JMS des serveurs d'applications Java EE comme Glassfish ou Weblogic ou les dinosaures comme (Websphere)MQ(Series) ?
De fait, Streams AQ constitue un pont idéal et transactionnel entre, d'un côté, le langage de référence des bases de données Oracle (le PL/SQL) et, via Java et JMS, l'immense majorité des plateformes modernes d'intégration : les Architectures Orientées Service (SOA), les bus de Services d'Entreprise (ESB) ou les Architectures Orientées Evènements (EDA). En mixant PL/SQL et JMS, on peut donc facilement intégrer les fonctionnalités avancées de la base Oracle à ces plateformes ou, tout simplement, aux serveurs d'applications Java EE.
Cet article illustre, avec 2 programmes simples, comment utiliser AQ/JMS pour échanger des messages entre PL/SQL, d'un côté, et, de l'autre, Java.