Upload
jessica-chapman
View
212
Download
0
Embed Size (px)
Citation preview
MQ Series
Cross PlatformDominant Messaging sw – 70% of marketMessaging API same on all platformsGuaranteed one-time deliveryTwo-Phase CommitWide EAI industry support
What is it? MQSeries is a middleware product from IBM that runs on multiple platforms and enables applications to send messages to other applications. Basically, the sending application PUTs a message on a Queue, and the receiving application GETs the message from the Queue. The sending and receiving applications do not have to be on the same platform, and do not have to be executing at the same time.
MQSeries takes care of all the storage, logging and communications details required to guarantee delivery of the message to the destination queue. In most cases, it will take care of translating the data when the source and destination use different character sets (EBCDIC on MVS vs. ASCII on NT or Unix). All the applications have to do is know the name of the Queue and agree on the meaning of the message.
MQ Series API (basic)
Connect to a Queue ManagerOpen a queuePut or get messagesClose a queueCommit or roll backDisconnect
Advanced features
Triggering – automatically starting an application to process a messageIMS & CICS Bridges – reusing legacy transactions without modificationConfirmation of message arrival, deliveryGrouping of messagesLoad balancing
MQ Application environments
IMS transactionIMS BMPIMS batchOS/390 BatchTSOCICS
DB2 Stored ProcedureVB program on WindowsC program on Windows or Unix
Supported languages include VB, C/C++, PL/1 and Cobol
Local Queuing
Distributed Queuing
Distributed Queuing
Server to Server
Client PCs(no MQ sw at all)
Unix or NT ServerHosting:Queue ManagerServer sw (WebSphere, UP, IIS, Apache, Web server…)
OS/390 hosting:Queue ManagerIMSDB2….
Server to Server -
Server application gets it’s data using MQ. Clients do not use MQ API Guaranteed Delivery in effect Server license required
Client to Server
Client PCs(MQ client sw)
Unix or NT ServerHosting:Queue Manager,MQ Client support,other server sw
OS/390 hosting:Queue ManagerIMSDB2
Client to Server
Client applications use MQ API (linked differently) MQ processing actually occurs on server within client support modules Client licenses free Guaranteed delivery not supported over client – server link
To what problems is MQ the solution?
Fast, asynchronous inter-system notification. Data propagationTransferring data from mainframe systems to PC/Unix systemsTransferring data from PC/Unix systems to mainframe systems
Problem…Solution…
An event in an IMS system requires action by a midrange system.
Modify the IMS program to PUT a message to the midrange system. The midrange system can be configured to start the application whenever a message arrives.
An event in an midrange system requires action by a mainframe system.
Modify the midrange program to PUT a message to the mainframe system. The mainframe system can process the message :-Immediately-At set intervals-On a schedule
Problem…Solution…
MQSEND
UP Database
OG_Main_Download
OF_Main_Upload
MQRECV
ECS Database
CADto
ECS
ECS to
CAD
*existing ECS MPPs modified to:1 – add XML formatting to some data2 – MQPUT to UP incoming queue
MQ
MQ
New BMP, cycles every x minutes 1) Reads all messages from queue into buffer 2) Sorts on sequence number3) Processes each in proper order
CAD - MQ Architecture
Problem…Solution…A PC user needs to request an overnight report that needs data from IMS, DB2 and other files.
A VB program puts the report requirements on a queue which is read by a batch job
Problem…Solution…Web server needs data from legacy IMS/CICS transaction.
Web server puts a message to the MQ-IMS/CICS Bridge, which runs the transaction and returns the results on a queue (screen-scraping without the 3270).
Problem…Solution…VB app needs data from DB2, SQL Server and IMS
VB client app puts messages on queues on NT and mainframe systems, triggering programs which populatereply queues on an NT system, which the VB app will readto present to the user. The VB client need not wait for the report to be completed.It could spawn a separate thread that would monitor thereply queues and notify the user when the report was complete.