SOA-04: Integrating OpenEdge Applications with SonicMQ

advertisement
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
Download