Integrating OpenEdge® Applications with SonicMQ® Pat Bonser Agenda JMS (Java™ Messaging Service) concepts & SonicMQ OpenEdge Adapter for SonicMQ – What is it? – How do I install and configure? Show me examples! Futures, what’s planned for OpenEdge 10.1A Adapter for SonicMQ 2 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ What is Messaging? A mechanism enabling autonomous applications to communicate Messages - units of information composed of – Payload – Header Destinations Priority Ordering Expiration Time-to-Live And more … 3 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ How Does It Work? Application A Producer Application B Message Oriented Middleware Bind to destination Send message 4 © 2005 Progress Software Corporation Bind to destination Destination JMS Broker Consumer Read message Consume message Integrating OpenEdge Applications with SonicMQ JMS Messaging Models Point to Point (1 to 1) Sender Queue Potential Receiver Potential Receiver Publish and Subscribe (1 to Many) Publisher Topic Subscriber Subscriber 5 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Connections and Sessions JMS Client A connection connects to a message broker You can create one or more sessions within a connection Connection Queue Session Topic Session 6 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Unified Domain (JMS 1.1) ConnectionFactory Creates Connection Creates Creates MessageProducer Session Creates Sends Messages To Creates MessageConsumer Receives Messages From Message Destination (Queue or Topic) 7 © 2005 Progress Software Corporation Destination (Queue or Topic) Integrating OpenEdge Applications with SonicMQ So what is SonicMQ? A Standards-Based Enterprise Messaging Server – A full functional implementation of JMS 1.1 specification – J2EE Compatibility 1.3 - 1.4 – Distributed Management Framework – Innovative Deployment Architectures User Benefits – Enterprise-class reliability, scalability, performance using standards-based infrastructure – Distributed management simplifies and reduces cost of deployment, configuration, monitoring 8 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ SonicMQ Domain Manager Start →Programs → Sonic Software → SonicMQ → SonicMQ Domain Manager Domain Manager Directory Service Agent Manager SonicMQ Management Broker 9 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Sonic Management Console Start →Programs → Sonic Software → SonicMQ → Management Console 10 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Queues Must Be Predefined 11 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Sonic JMS Test Client Start →Programs → Sonic Software → SonicMQ → JMS Test Client Allows you to use messaging concepts without having to write Java code 12 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Demonstration SonicMQ Demonstrate – Tool - Management Console Create a queue – Tool - JMS Test Client PTP demo using new Queue Pub/Sub demo creating a Topic 13 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ OpenEdge Adapter for SonicMQ JMS concepts & SonicMQ OpenEdge Adapter for SonicMQ – What is it? – How do I install and configure? Show me examples! Futures, what’s planned for OpenEdge 10.1A Adapter for SonicMQ 14 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ OpenEdge Adapter for SonicMQ Enterprise Integration for OpenEdge Applications OpenEdge Adapter for SonicMQ – Connects Progress 4GL app with SonicMQ Seamless integration with existing 4GL – Development tools and Methodologies Uses direct access from the 4GL to SonicMQ – Specific procedures for the Sonic API 15 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ OpenEdge Adapter for SonicMQ Direct access from 4GL to SonicMQ – – – – – GUI applications Character applications (UNIX) AppServer Webspeed agents Batch jobs Connection between – 4GL applications – 4GL and non 4GL applications 16 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ OpenEdge Adapter for SonicMQ Architecture PROGRESS 4GL *.w, *.p OpenEdge Database 17 © 2005 Progress Software Corporation SonicMQ Integrating OpenEdge Applications with SonicMQ Progress Adapter Programs Supplied .r files with API – For point to point Install-dir/jms/ptpsession.r – For publish and subscribe Install-dir/jms/pubsubsession.r 18 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Leverage SonicMQ jars Copy – from SonicMQ install to Progress directory install-dir\java\sonicMQ\lib Alternatively – Point your lib directory to install-dir\java\sonicMQ\lib 19 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Environment Variables Environment Variable Used By Description SONIC_HOME Sonic The installation directory for SonicMQ. Typically, this is C:\Sonic\MQ6.1 JAVA_HOME Sonic & Progress Can use the files installed with Sonic, Progress or a compatible jre directory PATH Progress You should include SONIC_HOME\bin and JDK_HOME\bin in your PATH environment variable 20 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Progress Components •AdminServer •OpenEdge Adapter for SonicMQ •NameServer (Optional) 21 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ OpenEdge Adapter for SonicMQ JMS concepts & SonicMQ OpenEdge Adapter for SonicMQ – What is it? – How do I install and configure? Show me examples! Futures, what’s planned for OpenEdge 10.1A Adapter for SonicMQ 22 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ PTP - Example OpenEdge Application SonicMQ OpenEdge Application 23 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ PTP - Basic Steps 1. 2. 3. 4. 5. 6. 7. Requires a Queue Connect to a SonicMQ Broker Create a Message Consumer Prepare to Receive Message From Queue Send Message to Queue Receive message from Queue Delete message 24 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ PTP – Requires a Queue Sonic Management Console 25 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ PTP - Connect to SonicMQ Broker RUN jms/ptpsession.p PERSISTENT SET ptpsession ("-H localhost -S 5162 "). RUN setBrokerURL IN ptpsession (“tcp//machinename:2506"). RUN beginSession IN ptpsession. OpenEdge Application 5162 Broker 2506 26 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ PTP – Create Message to Send /* Create a Text Message */ RUN createTextMessage IN ptpsession (OUTPUT messageH)./* Handles the messages */ RUN setText IN MessageH (“Your Message”). OpenEdge Application 5162 27 © 2005 Progress Software Corporation Sonic Broker Integrating OpenEdge Applications with SonicMQ PTP - Send Message to Queue /* Send Message to the “desired” Queue */ RUN sendToQueue IN ptpsession (“YourQueue", messageH, /* message handle */ ?, /* priority, ? = system default */ ?, /* timeToLive, ? = system default */ ?). /* deliveryMode, ? = system default */ OpenEdge Application 5162 Sonic Broker 28 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ PTP – Receive Message from QueueJava /* Create Receiver Queues to receive messages */ javax.jms.Queue receiveQueue = receiveSession.createQueue(rQueue); javax.jms.MessageConsumer qReceiver = receiveSession.createConsumer(receiveQueue); qReceiver.setMessageListener(this); connect.start(); OpenEdge Application 5162 Sonic Broker 29 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ PTP – Receive Message from Queue – 4GL /* Receive Message to the “desired” Queue */ RUN receiveFromQueue IN ptpsession (“YourQueue", /* Name of the Queue */ ?, /* No message selector */ consumerH, /* Handle incoming message default */ OpenEdge Application OpenEdge Application Sonic Broker 30 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ PTP Demonstration 31 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Pub/Sub - Example OpenEdge Application SonicMQ OpenEdge Application 32 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Pub\Sub - Basic Steps 1. Connect to a SonicMQ broker 2. 3. 4. 5. 6. Topics can be set on at run time Create a message subscriber Subscribe to Topic Publish message to Topic Consume message from a Topic Delete message 33 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Pub\Sub - Connect to SonicMQ Broker RUN jms/pubsubsession.p PERSISTENT SET pubsubsession ("-H localhost -S 5162 "). RUN setBrokerURL IN pubsubsession ("tcp://machinename:2506"). RUN beginSession IN pubsubsession. 5162 OpenEdge Application OpenEdge Application 5162 Broker 2506 34 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Pub\Sub - Create Message Consumer – 4GL /* receives requests from the Topic */ RUN createMessageConsumer IN pubsubsession (THIS-PROCEDURE, “YourHandler", /* This proc handles it */ /* name of internal proc. */ OUTPUT consumerH). OpenEdge Application 5162 OpenEdge Application 5162 Sonic Broker 35 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Pub\Sub - Create Message Consumer - Java /* receives requests from the Topic */ subSession = connect.createSession(false,javax.jms.Session. AUTO_ACKNOWLEDGE) javax.jms.MessageConsumer subscriber = subsession.createConsumer(topic); Subscriber.setMessageListener(this); OpenEdge Application 5162 OpenEdge Application 5162 Sonic Broker 36 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Pub\Sub – Subscribe to Topic RUN SUBSCRIBE IN pubsubsession ("Topic", ?, ?, NO, consumerH). /* /* /* /* /* topic name */ Subscription durable */ No message selector */ want my own messages to */ Handles the messages */ /* Start receiving requests */ RUN startReceiveMessages IN pubsubsession. OpenEdge Application OpenEdge Application 5162 Sonic Broker 37 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Pub\Sub - Publish Message to Topic /* In Bytes Message use mptr to store the XML*/ RUN setMemptr IN msgH (memFile, ?, ?). RUN publish IN pubsubsession ("Topic", /* Topic name */ msgH, /* message handle */ ?, /* priority, ? = system default */ ?, /* timeToLive, ? = system default */ ?). /* deliverymode, ? = system default */ OpenEdge Application OpenEdge Application 5162 Sonic Broker 38 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Pub\Sub – Consumer Message from Topic /* From chargeHandler internal procedure */ memptrDoc = DYNAMIC-FUNCTION ('getMemptr':U IN msgH). hDoc:LOAD("memptr", memptrDoc, FALSE). hDoc:GET-DOCUMENT-ELEMENT(hRoot). hRoot:GET-CHILD(hTable, 1). … /* All your standard business logic */ OpenEdge Application OpenEdge Application 5162 Sonic Broker 39 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Pub/Sub Demonstration 40 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Integrating OpenEdge Applications with SonicMQ JMS concepts & SonicMQ OpenEdge Adapter for SonicMQ – What is it? – How do I install and configure? Show me examples! Futures, what’s planned for OpenEdge 10.1A Adapter for SonicMQ 41 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Under Development D I S C L A I M E R This talk includes information about potential future products and/or product enhancements. What I am going to say reflects our current thinking, but the information contained herein is preliminary and subject to change. Any future products we ultimately deliver may be materially different from what is described here. D I S C L A I M E R 42 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Installation Prior to 10.1A – Users had to manually move jar files to appropriate directories In 10.1A – Sonic “Silent Install” will move files to appropriate locations without user interaction 43 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Architecture Prior to 10.1A, only one option – OpenEdge Adapter for SonicMQ In 10.1A, two additional options – OpenEdge Adapter for SonicMQ ClientConnect – OpenEdge Adapter for SonicMQ ServerConnect 44 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Prior to 10.1A OpenEdge Adapter for SonicMQ RUN jms/ptpsession.p PERSISTENT SET hptpsession ("-H myAdminServerMachine -S 5162 "). RUN setBrokerURL IN hptpsession (“tcp//mySonicMachine:2506"). RUN beginSession IN hptpsession. AdminServer SonicMQ Broker 2506 API-JMS NameServer MQAdapter Thread 1 JMS QUEUE Thread 2 API-JMS Thread 3 mySonicMachine myAdminServerMachine 45 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ OpenEdge Adapter for SonicMQ ClientConnect RUN jms/ptpsession.p PERSISTENT SET hptpsession (“-SMQConnect"). RUN setBrokerURL IN hptpsession (“tcp//mySonicMachine:2506"). RUN beginSession IN hptpsession. SonicMQ Broker 2506 Thread 1 API-JMS Thread 2 QUEUE Thread 1 API-JMS Thread 2 mySonicMachine 46 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ OpenEdge Adapter for SonicMQ ServerConnect X AdminServer SonicMQ Broker 2506 NameServer AppServer Thread 1 Thread 1 API-JMS QUEUE Thread 1 47 © 2005 Progress Software Corporation mySonicMachine Integrating OpenEdge Applications with SonicMQ Combination of PTP and Pub/Sub Prior to 10.1A – Two different session RUN jms/ptpsession.p.. RUN jms/pubsubsession.p… In 10.1A – Parent containing all API RUN jms/jmssession.p… 48 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ Functionalities and Upgraded APIs Client Persistence Enhanced XML support Temp Table messages ProDataSet messages Fault Tolerance Serialized Connection Objects … 49 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ In Summary The adapter allows 4GL programmers to use JMS messaging techniques from 4GL code WebSpeed It is easy to install and run Web Client examples Customers are successfully using this technology in Progress V9 and OpenEdge 10 50 © 2005 Progress Software Corporation 4GL .NET Sonic Broker Any Java Integrating OpenEdge Applications with SonicMQ Questions JMS concepts & SonicMQ OpenEdge Adapter for SonicMQ – What is it? – How do I install and configure? Show me examples! Futures – OpenEdge 10.1A Adapter for SonicMQ 51 © 2005 Progress Software Corporation Integrating OpenEdge Applications with SonicMQ