SOA2: OpenEdge 10'1A Adapters for SonicMQ - PowerPoint PPT Presentation

1 / 87
About This Presentation
Title:

SOA2: OpenEdge 10'1A Adapters for SonicMQ

Description:

API reference details are supplied in the notes for each . ... INPUT clientID AS CHAR. Procedure. ParametersReturns. Type. Standard Steps...Except ... – PowerPoint PPT presentation

Number of Views:92
Avg rating:3.0/5.0
Slides: 88
Provided by: PSC64
Category:

less

Transcript and Presenter's Notes

Title: SOA2: OpenEdge 10'1A Adapters for SonicMQ


1
SOA-2 OpenEdge 10.1A Adapters for SonicMQ
  • New Install, New Architecture, and New APIs

Cheryl LaBarge
Senior Training Program Manager
2
Agenda
OpenEdge 10.1A Adapters for SonicMQ
  • New Install
  • Now Supporting JMS 1.1
  • New Architecture
  • New APIs
  • Error Handling

This presentation includes annotations with
additional complementary information. API
reference details are supplied in the notes for
each slide.
3
New Install A Symbiotic Process
A component no longer a product
  • OpenEdge10.1A Connections to Sonic 6.1
  • SonicMQ 6.1 Client included on OpenEdge Media
  • SonicMQ 6.1 Client Silent Install to OpenEdge
    directory
  • Offline.bat or Offline.sh to install later

4
Agenda
OpenEdge 10.1A Adapters for SonicMQ
  • New Install
  • Now Supporting JMS 1.1
  • New Architecture
  • New APIs
  • Error Handling

5
Prior to 10.1A
JMS 1.0
  • Two different sessions
  • Queue
  • Topic

RUN jms/ptpsession.p.
RUN jms/pubsubsession.p.
6
Example - Prior to 10.1A
Prior to 10.1A - Create a ptp session object
DEFINE VARIABLE ptpsession AS HANDLE
NO-UNDO. DEFINE VARIABLE hMsg AS HANDLE
NO-UNDO. DEFINE VARIABLE cText AS CHARACTER
INITIAL PTPsession ONLY" NO-UNDO. RUN
jms/ptpsession.p PERSISTENT SET ptpsession ("-H
OEServer -S 5162"). RUN setBrokerURL IN
ptpsession (tcp//MQBrokerHost2506). RUN
beginSession IN ptpsession. RUN sendToQueue IN
ptpsession ("SampleQ1", hMsg, ?, ?, ?). RUN
deleteSession IN ptpsession.
Point to Point Session
Sends to Queue
7
10.1A - Combination of PTP and Pub/Sub
JMS 1.1 Unified Domain Model
  • New in 10.1A
  • Parent containing all APIs
  • All new code should use jmssession.p!!!

RUN jms/jmssession.p.
8
Example - Unified Session in 10.1A
One session handle can send to queues AND publish
to topics
DEFINE VARIABLE hSession AS HANDLE
NO-UNDO. DEFINE VARIABLE hMsg AS HANDLE
NO-UNDO. DEFINE VARIABLE cText AS CHARACTER
INITIAL Unified JMSsession" NO-UNDO. RUN
jms/jmssession.p PERSISTENT SET hSession ("-H
myMachine -S 5162"). RUN setBrokerURL IN hSession
(tcp//2506"). RUN sendToQueue IN hSession
("SampleQ1", hMsg, ?, ?, ?). RUN publish IN
hSession ("Topic1", hMsg, ?, ?, ?). RUN
deleteMessage IN hMsg. RUN deleteSession IN
hSession.
9
Demonstration Unified Session
Using Sonic JMS Test Client to view messages
SampleQ1
Topic1
10
Agenda
OpenEdge 10.1A Adapters for SonicMQ
  • New Install
  • Now Supporting JMS 1.1
  • New Architecture
  • New APIs
  • Error Handling

11
Architecture
OpenEdge Adapter for SonicMQ
  • Prior to 10.1A
  • OpenEdge Adapter for SonicMQ
  • OpenEdge 10.1A Connection Modes
  • BrokerConnect
  • ClientConnect
  • ServerConnect

12
Example - BrokerConnect
  • Prior to 10.1A
  • Separate processes
  • OpenEdge Adapter
  • Client
  • Still available in 10.1A

RUN jms/jmssession.p PERSISTENT SET hSession
("-H OEServer -S 5162). RUN setBrokerURL IN
hSession(tcp//MQBrokerHost2506"). RUN
beginSession IN hSession .
13
Example - ClientConnect
  • SonicMQ ClientConnect
  • Single Process - OpenEdge Adapter Client
  • AdminServer NameServer no longer needed

RUN jms/jmssession.p PERSISTENT SET hSession
(-SMQConnect"). RUN setBrokerURL IN
hSession(tcp//MQBrokerHost2506"). RUN
beginSession IN hSession.
14
Example - ServerConnect
  • MQ-ServerConnect

15
Logging
  • ClientConnect logging disabled by default
  • JavaTools.properties
  • brkLogginglevel
  • srvrLogginglevel
  • ServerConnect
  • Similar to 10.0A logging
  • New page on AppServer and WebSpeed Agents

16
Limitations of BrokerConnect
BrokerConnect cannot take advantage of certain
features
17
Agenda
OpenEdge 10.1A Adapters for SonicMQ
  • New Install
  • Now Supporting JMS 1.1
  • New Architecture
  • New APIs
  • Error Handling

18
New and Enhanced APIs
  • Client Message Persistence
  • Fault Tolerant Client Connections
  • Serialized Connection Objects
  • Enhanced XML support
  • Temp Table messages
  • DataSet messages
  • Temporary Destinations
  • Server Based Message Selectors

19
Client Persistence
Available only with new connection modes
  • Allows applications to continue to send/publish
    messages when MQBroker connection is lost
  • Rechecking at set intervals
  • Messages are sent from local store (directory)
    when a connection is reestablished

20
Steps to Use Client Persistence
  • Create the session object
  • Use new client persistence APIs
  • Begin the session
  • Send/receive messages
  • If SonicMQ Broker unavailable, messages sent will
    be persisted

21
1. Create Session Object
Standard StepsExcept
RUN jms/jmssession.p PERSISTENT SET hSession
("-SMQConnect"). RUN setBrokerURL IN hSession
("localhost2506"). RUN SETUSER IN hSession
("Administrator"). RUN setPassword IN
hSession("Administrator"). / Client Persistence
Requires a Client ID / RUN setClientID IN
hSession ("TestClientPersistence999").
Client Persistence Requires an ID
22
2. Use New Client Persistence APIs
New APIs
  • Set/Get
  • Local Store Directory
  • Local Store Size
  • Reconnect Timeout
  • Reconnect Interval
  • Client Persistence

23
Local Store Directory
  • Directory to persist messages
  • Default, current working directory
  • C\OpenEdge\WRK
  • Before beginSession

24
Local Store Size
  • Maximum File Size
  • Default 10,000(KB)
  • Before beginSession

25
Reconnect Timeout
  • How long will it keep trying to reconnect
  • Default 0 Minutes No limit
  • Before beginSession

26
Reconnect Interval
  • Time between attempts
  • Default 30 Seconds
  • Before beginSession

QUESTIONWhat happens if you give up?
ANSWER Messages stay in local store.
ANSWER No, you can crack the local message open
just to look!
27
Client Persistence
  • Enable the client side property
  • Default False
  • Before beginSession

28
Create Rejected Message Consumer
  • Handles all rejected message
  • After beginSession

29
Example - Using the New APIs
  • / local store directory relative to cwd /
  • RUN setLocalStoreDirectory IN hSession
    ("mqstore").
  • RUN setLocalStoreSize IN hSession (50000).
  • / Give up if broker down 10 hours /
  • RUN setReconnectTimeout IN hSession (600).
  • / Retry every minute /
  • RUN setReconnectInterval IN hSession (60).
  • / set Client Persistence /
  • RUN setClientPersistence IN hSession (TRUE).
  • / Note CreateRejectedMessageConsumer must be
    done /
  • / AFTER BeginSession. You will see this later /

30
3. Example - Begin the Session
Standard Stepsplus calling new API
RUN beginSession IN hSession. /After
beginSession, createRejectedMessageConsumer/ RUN
createRejectedMessageConsumer IN hSession
(INPUT THIS-PROCEDURE, INPUT
"RejectedMsgHandler", OUTPUT HrejectedMsg).
31
Demonstration4a. Send Messages
  • Start
  • SendToQueue Window
  • Send This is the first Message
  • Stop Container1
  • Notice Client shows no signs of lost connection
  • Send 4 more messages
  • Restart Container1
  • Persistent client will send to Queue by
    collecting from mqstore

32
4b. Receive Messages
Seeing is believing
  • Start JMS Test Client to receive all messages

33
New and Enhanced APIs By Concepts
  • Client Message Persistence
  • Fault Tolerant Client Connections
  • Serialized Connection Objects
  • Enhanced XML support
  • Temp Table messages
  • DataSet messages
  • Temporary Destinations
  • Server Based Message Selectors

34
What is Fault Tolerance?
Defining backup broker to pickup if primary
broker fails
Domain
Replication Connection(s)
PrimaryBackupBroker
PrimaryBroker
PrimaryContainer
PrimaryBackupContainer
Requires CAA Licensing
35
Using Fault Tolerant Client Connections
Available only with new connection modes
  • SonicMQ Broker
  • Must be licensed for Fault Tolerance
  • Primary and Backup Broker must be configured and
    tested
  • ABL Client can Set/Get
  • Fault Tolerance
  • Client Transaction Buffer Size
  • Initial Connection Timeout
  • Reconnect Timeout

36
Fault Tolerant Client Connections
  • Enable/Disable Fault Tolerance
  • Before beginSession
  • Default is FALSE

37
Client Transaction Buffer Size
  • Client Transaction Buffer Size
  • Before beginSession
  • Maximum buffer size for transactions
  • Default 0 Bytes. If 0, it will use SonicMQ Broker
    defined value instead

38
Fault Tolerant Client Connections
  • Initial Connection Timeout
  • Before beginSession
  • Time to wait for initial connection to broker
  • Seconds, default 30

39
Fault Tolerant Client Connections
  • Reconnect Timeout
  • Before beginSession
  • Time to attempt to reconnect to broker
  • Seconds, default 60

40
Fault Tolerant Example
Available only with new connection modes
DEFINE VARIABLE hSession AS HANDLE. RUN
jms/jmssession.p PERSISTENT SET hSession
("-SMQConnect"). RUN setConnectionURLs IN
hSession ("Primary2508,BackupServer9876). RUN
setFaultTolerant IN hSession(TRUE). /
Default
values ClientTransactionBufferSize,0 bytes
defaults to Sonic InitialConnectionTimeout, 30
seconds FaultTolerantReconnectTimeout, 60 seconds

/ RUN beginSession IN hSession. RUN
createChangeStateConsumer IN hSession (THIS-PROCE
DURE, "msgHandler", OUTPUT msgH).
41
Fault Tolerant Client Connections
  • Verify Broker is licensed for Fault Tolerance
  • After beginSession
  • Default Disabled (FALSE)
  • Notify Application of lost Broker connection
  • After beginSession
  • Optional, default is not to notify

42
Change State Consumer
PROCEDURE msgHandler DEFINE INPUT PARAMETER
hMessage AS HANDLE. DEFINE INPUT PARAMETER
hMsgConsumer AS HANDLE. DEFINE OUTPUT PARAMETER
hReply AS HANDLE. DEFINE VAR val AS CHAR
NO-UNDO. val DYNAMIC-FUNCTION ("getCharProper
ty" IN hMessage, "state"). / val is "active",
"reconnecting", "failed", or "closed" /
DISPLAY val. RUN deleteMessage IN
hMessage. END.
43
New and Enhanced APIs By Concepts
  • Client Message Persistence
  • Fault Tolerant Client Connections
  • Serialized Connection Objects
  • Enhanced XML support
  • Temp Table messages
  • DataSet messages
  • Temporary Destinations
  • Server Based Message Selectors

44
Example - Serialized Connection Objects
Available only with new connection modes
  • Define file that contains connection data
  • You can replace
  • With

RUN setBrokerURL IN hSession ("localhost2506"). R
UN SETUSER IN hSession ("Administrator"). RUN
setPassword IN hSession("Administrator").
RUN setConnectionFile IN hSession
(connectionfilename).
45
Created by Sonic Administrator
Stores All Default Connection Information
  • Sonic Administrator completes
  • Lookup Name
  • Connection URL
  • Default User Name
  • Default Password
  • Confirm Password

WARNING Always use machine names or IP
addresses. Localhost used here for generic demo
46
New and Enhanced APIs By Concepts
  • Client Message Persistence
  • Fault Tolerant Client Connections
  • Serialized Connection Objects
  • Enhanced XML support
  • Temp Table messages
  • DataSet messages
  • Temporary Destinations
  • Server Based Message Selectors

47
XML Support
Additional APIs added to the XMLMessage Object
  • Provides easier integration between SonicMQ and
    OpenEdge
  • Create an XML message
  • Use the X-DOCUMENT handle
  • or
  • Use the SAX-Writer
  • Receive an XML Message
  • Use the X-DOCUMENT handle
  • or
  • Use the SAX-Reader

48
XML Support - DOM
Additional APIs added to the XMLMessage Object
  • X-Document
  • Copy XML document into XML message
  • Copy XML message into XML document

49
Example - XML Support - DOM
Additional APIs added to the XMLMessage Object
RUN createXMLMessage IN hSession (OUTPUT
hMsg). CREATE x-document hXDOC. hXDOCLOAD("file",
myCustom.xml", false). RUN setX-Document IN
hMsg (hXDOC). RUN sendToQueue IN hSession
("SampleQ1", hMsg, ?, ?, ?). RUN deleteMessage
IN hMsg.
50
XML Support Sending with a SAX-Writer
Additional APIs added to the XMLMessage Object
  • SAX-Writer
  • Create SAX-Writer handle
  • Output destination internal longchar
  • Example

hSAXWriter DYNAMIC-FUNCTION ('getSaxWriter'U
IN hMsg, ?)
51
XML Support Sending with a SAX-Writer
Additional APIs added to the XMLMessage Object
  • SAX-Writer
  • Delete SAX-Writer handle
  • Example

RUN deleteSaxWriter IN hMsg (hSAXWriter).
52
Checking Message Type
  • Returns SonicMQ message type
  • Now Includes
  • DataSetMessage
  • TempTableMessage

Message Type
53
Example - XML Support Receiving with SAX-Reader
Additional APIs added to the XMLMessage Object
  • Sax-Reader
  • Input destination internal longchar
  • Example

CREATE SAX-READER hSAXReader. RUN setSaxReader IN
hMsg (hSAXReader). hSAXReaderSAX-PARSE(). DELETE
OBJECT hSAXReader.
54
Example - Deleting Message
RUN deleteMessage IN hMsg. / Stop receiving
messages / RUN stopReceiveMessages IN hSession.
55
New and Enhanced APIs By Concepts
  • Client Message Persistence
  • Fault Tolerant Client Connections
  • Serialized Connection Objects
  • Enhanced XML support
  • Temp Table messages
  • DataSet messages
  • Temporary Destinations
  • Server Based Message Selectors

56
Temp Table Messages
New APIs
  • Allow applications to send and receive
  • Temp-Tables as XML messages to SonicMQ
  • SonicMQ Adapter
  • Converts Temp-Tables to/from XML
  • SonicMQ
  • Handles as an XML message

57
Create and Send a Temp-Table as an XML Message
  • Create Temp-Table Message
  • Send Temp-Table to XML Message

58
Example - Create and Send a Temp-Table as an XML
Message
DEFINE VARIABLE HSession as HANDLE
NO-UNDO. DEFINE VARIABLE HMsg as HANDLE
NO-UNDO. DEFINE VARIABLE TempTable tcust LIKE
customers NO-UNDO. / create temp table
records .. / RUN createTempTableMessage in
HSession (OUTPUT HMsg). RUN setTempTable IN
HMsg (tcust, ?, TRUE). RUN sendToQueue IN
Hsession ("SampleQ1", HMsg, ?, ?, ?)..
59
Receiving Temp Table Messages
  • Read XML Message into Temp-Table

60
Example Receiving Temp Tables
DEFINE VARIABLE mtype AS CHAR NO-UNDO. mtype
DYNAMIC-FUNCTION ('getMessageType'u IN
hMsg). MESSAGE "MTYPE is " mType VIEW-AS
ALERT-BOX. IF mtype "TempTableMessage" THEN
DO MESSAGE A table message" VIEW-AS
ALERT-BOX. hTempttItem DYNAMIC-FUNCTION (
'getTempTable'u IN hMsg, ?, ?, ?).
httItemCOPY-TEMP-TABLE( hTempttItem ) . /
TempTable actions as needed /
OPEN-BROWSERS-IN-QUERY-FRAME-NAME
DELETE OBJECT hTempttItem. END.
61
New and Enhanced APIs By Concepts
  • Client Message Persistence
  • Fault Tolerant Client Connections
  • Serialized Connection Objects
  • Enhanced XML support
  • Temp Table messages
  • DataSet messages
  • Temporary Destinations
  • Server Based Message Selectors

62
DataSet Messages
Send a ProDataSet as an XML Message to SonicMQ
  • Allow applications to send and receive
    ProDataSets as XML messages to SonicMQ
  • SonicMQ Adapter
  • Converts ProDataSet to/from XML
  • SonicMQ
  • Handles as an XML message

63
DataSet Messages
  • Create DataSet Message
  • Send ProDataSet to XML Message

64
Example - DataSet Messages
DEFINE VARIABLE HSession as HANDLE
NO-UNDO. DEFINE VARIABLE HMsg as HANDLE
NO-UNDO. DEFINE VARIABLE HDataSet AS HANDLE
NO-UNDO. / define DataSet etc etc.. / RUN
createDataSetMessage in HSession (OUTPUT HMsg).
RUN setDataSet IN HMsg (HDataSet, ?, TRUE). RUN
sendToQueue IN Hsession ("SampleQ1", HMsg, ?,
?, ?).
65
DataSet Messages
Receive an XML Message into a ProDataSet from
SonicMQ
  • Read XML message into ProDataSet

66
Example - Receiving a ProDataSet
IF mtype "DatasetMessage" THEN DO RUN
PurgeDataset. / returns dynamic dataset /
hTempdsOrder DYNAMIC-FUNCTION ('getDataSet
'u IN hMsg, ?, ?, ?). / dumps the dynamic
one into static dsOrder /
hdsOrderCOPY-DATASET( hTempdsOrder ) . RUN
DisplayDataSetDetails. DELETE OBJECT
hTempDSOrder. END.
67
Enhanced APIs
Existing APIs now support
  • Temp-Table and DataSet messages
  • Reset message to read-only
  • Change Mode to write-only
  • Delete Temp-Table or DataSet Message too

68
Demonstration
  • Serialized Connection Object
  • Enhanced XML support
  • Temp Table messages
  • DataSet messages

69
New and Enhanced APIs By Concepts
  • Client Message Persistence
  • Fault Tolerant Client Connections
  • Serialized Connection Objects
  • Enhanced XML support
  • Temp Table messages
  • DataSet messages
  • Temporary Destinations
  • Server Based Message Selectors

70
Temporary Destinations
createTemporaryQueue createTemporaryTopic
  • Allow applications to create temporary queues and
    topics
  • Queue
  • Topic

71
Temporary Destinations
deleteTemporaryQueue deleteTemporaryTopic
  • Delete when no longer needed
  • Release resources
  • Delete message consumer object
  • Then delete temporary queue or topic
  • Queue
  • Topic

72
Example - Temporary Queues and Topics
RUN createTemporaryQueue IN hSession (OUTPUT
cTempQueue). RUN createTemporaryTopic IN
hSession (OUTPUT cTempTopic). MESSAGE "The
temporary Queue is called " SKIP
cTempQueue SKIP "The temporary Topic is
called " SKIP cTempTopic VIEW-AS
ALERT-BOX. RUN sendToQueue IN hSession
(cTempQueue, hMsg, ?, ?, ?). RUN publish IN
hSession (cTempTopic, hMsg, ?, ?, ?). RUN
deleteTemporaryQueue IN hSession (OUTPUT
cTempQueue). RUN deleteTemporaryTopic IN
hSession (OUTPUT cTempTopic).
73
New and Enhanced APIs By Concepts
  • Client Message Persistence
  • Fault Tolerant Client Connections
  • Serialized Connection Objects
  • Enhanced XML support
  • Temp Table messages
  • DataSet messages
  • Temporary Destinations
  • Server Based Message Selectors

74
Server Based Message Selectors
New APIs - Available with all connection modes
  • Messages filtered on defined criteria
  • Prior to 10.1A
  • Point-to-Point
  • Message filter on SonicMQ Broker
  • Publish/Subscribe
  • Message filter on SonicMQ Client
  • New in 10.1A
  • Ability to move message filter to SonicMQ Broker

75
Server Based Message Selectors
New APIs - Available with all connection modes
  • Return current message filter setting
  • Default False
  • Using server based message selection

RUN setSelectorAtBroker IN HSession (TRUE).
76
Agenda
OpenEdge 10.1A Adapters for SonicMQ
  • New Install
  • Now Supporting JMS 1.1
  • New Architecture
  • New APIs
  • Error Handling

77
Error Handling
  • Types of Errors
  • Deployment/Administration errors
  • Runtime errors
  • Client errors before request is made
  • Client errors making request
  • Server errors while processing request
  • Available Debugging Tools
  • SOAP Message Viewers (SOAP Faults)
  • Log Files / Logging Levels

78
Where to Look for Errors
  • SOAP Fault response message
  • Client can catch the exception and look at it
    programmatically
  • Use SOAP Message Viewer
  • Log Files
  • JSE log file
  • WSA log file .wsa.log
  • AdminServer log file admserv.log
  • AppServer log file .server.log, .ns.log
  • SonicMQ ClientConnect log file cc.broker.log,
    cc.server.log
  • SonicMQ ServerConnect log file sc.broker.log,
    sc.server.log

79
In Summary
  • Adapters for SonicMQ are a component in every
    OpenEdge install that you can use today
  • All connections support JMS 1.1
  • New connections support new APIs

Broker
PRODUCER publish, send
Destination
JMS 1.1 Messages
CONSUMER subscribe, receive
80
For More Information, go to
PSDN
  • Codes samples available at
  • http//psdn.progress.com
  • Keyword
  • Exchange

81
For More Information, go to
Relevant SonicMQ Sessions
  • Introductory
  • SOA3 Getting the message, so you need to
    integrate, but what do you need to know and do?
  • Architecture
  • ARCH-7 Integrate this! SonicMQ and the OpenEdge
    Reference Architecture
  • New in Sonic 7.0
  • SOA4 Introducing Sonic SOA Suite v7.0

82
For More Information, go to
Relevant XML Exchange Sessions
  • XML
  • DEV-11 Leveraging ProDataSets in an Open
    Environment
  • DEV 15 XML in OpenEdge - Past, Present and
    Future
  • INNOV-10 An Introduction to XQuery by Example

83
Updated OpenEdge Documentation
  • Getting Started
  • Application Integration Services
  • Installation Configuration Guides
  • Core Services
  • Development
  • Programming for the OpenEdge Adapter for SonicMQ
    with the 4GL-JMS API
  • Application Server
  • Administration

84
Hands On Training
http//www.progress.com/services/education/index.s
sp
85
Questions?
86
Thank you foryour time
87
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com